Я пытаюсь реализовать настроенный CellRenderer в Ruby/GTK, и я уже нашел это предложение:
Однако, когда я пытаюсь сделать следующее:
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 и перезаписать метод, в этом примере get_size, который вызывается TreeView. Однако я думаю, что поскольку CellRendererText является модулем C, а не рубиновым классом, я не могу перезаписать его методы, не сообщив об этом системе.
Также я CellRenderers должен быть назначен TreeViewColumn, который затем вызывает get_size и другие методы.
Насколько мне известно, аналогичная проблема существовала в PyGtk, где ее как-то обошли, добавив класс GenericCellRenderer: