須藤です。
Ruby-GNOME2プロジェクトはRuby-GNOME2 1.2.0をリリースしまし
た。
今回からGTK+ 3用のバインディングRuby/GTK3を追加しました!
以下でインストールできます。
gem install gtk3
Windows用のビルド済みバイナリも用意したので、↑のコマンドで
Windowsでも使えるはずです。
(試していませんが。。。Windowsを持っている人は、試して動い
たかどうか教えて欲しいです。。。)
また、ClutterとClutter-GTKのバインディングも追加しています。
これらはGObject Introspectionを使って実装しています。
== お願い
既存のバインディングの中で、可能なものはGObject
Introspectionベースのバインディングに置き換えていきたいと思っ
ています。具体的には、まずは、Ruby/GStreamerとRuby/GooCanvas
を置き換えたいと思っています。その作業を手伝ってもらえないで
しょうか。
これらはAPIが多くてなかなか完成しなく、まだ「実験的」な扱い
のライブラリです。しかも、新しいバージョンへの対応もできてい
ません。(GStreamerは1.0.0がリリースされました!)
GObject Introspectionベースのバインディングにすることにより、
半自動的に新しいバージョンにも対応できるようになり、開発者に
とっても利用者にとってもうれしくなります。
で、やって欲しい作業ですが、サンプルを移植して欲しいです。
ほとんど素のGObject Introspectionベースのバインディングを用
意しました。
GStreamer用:
https://github.com/ruby-gnome2/ruby-gnome2/blob/master/gstreamer/sample/gst-gi.rb
GooCanvas用:
https://github.com/ruby-gnome2/ruby-gnome2/blob/master/goocanvas/sample/goocanvas-gi.rb
これらのファイルをrequireしてGStreamer/GooCanvasに付属のサン
プルを移植して欲しいです。
たぶん、こんな風にすると作業を開始できます。
GStreamerの場合:
% gem install gobject-introspection
% git clone git@...
% cd ruby-gnome2/gstreamer
% cd vim sample/xxx.rb
require "gst-gi"
Gst.init
# サンプルを移植する
% ruby -I sample sample/xxx.rb
GStreamerのサンプルは
http://cgit.freedesktop.org/gstreamer/gstreamer/tree/tests/examples/
以下にあるようです。例えば、以下がサンプルです。
http://cgit.freedesktop.org/gstreamer/gstreamer/tree/tests/examples/helloworld/helloworld.c
GooCanvasの場合:
% gem install gobject-introspection
% git clone git@...
% cd ruby-gnome2/goocanvas
% cd vim sample/xxx.rb
require "goocanvas-gi"
# サンプルを移植する
% ruby -I sample sample/xxx.rb
GooCanvasのサンプルはここにあります。
http://git.gnome.org/browse/goocanvas/tree/demo
どちらもサンプルをひとつ移植するごとにpull requestを送っても
らえるとうれしいです。
また、中にはうまく移植できないものもあるかもしれません。その
ときはpull requestかメーリングリストで教えてください。
Ruby/GObjectIntrospectionで未実装な機能が必要かもしれません。
== インストール方法
% gem install gtk2
% gem install gtk3
== Ruby-GNOME2 1.2.0: 2013-01-24
GTK+ 3サポートリリース!
=== 変更点
==== 全体
* ruby-gtk3パッケージを追加。以下はパッケージに含まれるライブラリ:
* Ruby/GLib2
* Ruby/ATK
* Ruby/Pango
* Ruby/GdkPixbuf2
* Ruby/GDK3
* Ruby/GTK3
==== Ruby/GLib2
* 改良
* VALUE <-> GBoxedの変換をカスタマイズできるようにした
* RVAL2GOBJでVALUE <-> GBoxedの変換をできるようにした
* GLib::Source::REMOVEを追加した
* GLib::Source::CONTINUEを追加した
* rbgobj_make_boxed_raw()を追加した
* 内部で使用するためにGLib::Valueを追加した
* [windows] GLibを最新版に更新: 2.28.8-1 -> 2.34.3
* 変更
* 非推奨だったGLib::Win32.get_package_installation_directoryを削除
* 非推奨だったGLib::Win32.get_package_installation_subdirectoryを削除
* RGConvertTableのコールバックにuser_dataを追加
* rbgobj_convert_define()が渡されたRGConvertTableをコピー
するようになった
* 非推奨だったG_DEF_FUNDAMENTALを削除。代わりに
RG_DEF_CONVERSIONを使ってください。
==== Ruby/GIO2
* 改良
* ヘッダーをインストールするようにした
==== Ruby/ATK
* 改良
* [windows] 最新のATKに更新: 1.32.0 -> 2.6.0
==== Ruby/Pango
* 改良
* [windows] 最新のPangoに更新: 1.28.3 -> 1.32.6
==== Ruby/GdkPixbuf2
* 改良
* [windows] 最新のgdk-pixbufに更新: 2.24.0 -> 2.26.5
==== Ruby/GTK2
* 改良
* Allocationに設定してあった「コピーしないフラグ」が不要
だったため削除
* [windows] 最新の TK+ 2に更新: 2.24.8 -> 2.24.14
==== Ruby/GDK3
* 改良
* [windows] サポートした: 3.6.4
==== Ruby/GTK3
* 改良
* Allocationに設定してあった「コピーしないフラグ」が不要
だったため削除
* [windows] サポートした: 3.6.4
==== Ruby/GObjectIntrospection
* 改良
* メソッドのオーバーロードに対応
* コンストラクターのオーバーロードに対応
* GBoxedオブジェクトに対応
* char *に対応
* GInterfaceに対応
* CallableInfoに対応
* 「may be null」に対応
* unionに対応
* GBoxedではない構造体に対応
* 出力引数に対応
* Cの配列に対応
* 述語メソッドのメソッド名の最後に"?"を追加するようにした
* SourceFuncコールバックに対応
* GValueに対応
* GObjectIntrospection::Loader.register_boxed_class_converterを追加
* 入出力引数に対応
* バイナリデータの配列に対応
* 変更
* ArgInfo#[] -> ArgInfo#get_arg
==== Ruby/CairoGObject
* 追加
==== Ruby/Clutter
* 追加
==== Ruby/ClutterGtk
* 追加
|