Ruby/GTK でカスタマイズされた CellRenderer を実装しようとしていますが、既に次の提案を見つけました。
ただし、次のことを試すと:
class CellRendererCustom < Gtk::CellRendererText
type_register #register within gobject system?
def initialize
super
end
def get_size(widget, cell_area)
puts "Never called :-("
return 0,0,100,100
end
def signal_do_get_size(widget, cell_area)
puts "Never called :-("
return 0,0,100,100
end
def signal_do_on_get_size(widget, cell_area)
puts "Never called :-("
return 0,0,100,100
end
def on_get_size(widget, cell_area)
puts "Never called :-("
return 0,0,100,100
end
end
これらのシグナルは決して呼び出されません。これは、Ruby が GObject API にどのように接続されているかに関係していると思いますが、正直なところ、これがどのように機能するのかわかりません。
私がやりたいのは、CellRendererText をサブクラス化し、メソッドを上書きすることです。この例では、TreeView によって呼び出される get_size です。ただ、CellRendererTextはRubyクラスではなくCモジュールなので、実際にシステムに認識させないとメソッドを上書きできないと思います。
また、CellRenderers を TreeViewColumn に割り当てる必要があります。これにより、get_size およびその他のメソッドが呼び出されます。
私の知る限り、同様の問題が PyGtk に存在し、GenericCellRenderer
クラスを追加することで何らかの形で回避されました。