[pygtk] Writting a widget with native scrolling support
Gustavo J. A. M. Carneiro
gjc at inescporto.pt
Thu Oct 23 23:55:25 WST 2008
On Thu, 2008-10-23 at 15:42 +0200, Laszlo Nagy wrote:
> Gustavo J. A. M. Carneiro wrote:
> > http://www.daa.com.au/pipermail/pygtk/2006-January/011668.html
> >
> Yes, this was the only related post that I could find on the internet.
> But I could not use it for anything because it does not tell how to do
> it. It says:
>
> "For custom widgets, check the method gtk.Widget.set_set_scroll_adjustments_signal(signal_name)"
>
>
> But this method only has a signal_name parameter. I do not see how I
> could use it for specifying my adjustments and making my widget support
> scrolling natively?
>
> (Also that was written in 2006, probably it is outdated.)
It is not outdated. See
http://library.gnome.org/devel/gtk/2.14/GtkWidget.html
GtkWidgetClass
typedef struct {
/* The object class structure needs to be the first
* element in the widget class structure in order for
* the class mechanism to work correctly. This allows a
* GtkWidgetClass pointer to be cast to a GtkObjectClass
* pointer.
*/
GtkObjectClass parent_class;
guint activate_signal;
guint set_scroll_adjustments_signal;
} GtkWidgetClass;
activate_signal The signal to emit when a widget of this class
is activated, gtk_widget_activate() handles the emission.
Implementation of this signal is optional.
set_scroll_adjustment_signal This signal is emitted when a
widget of this class is added to a scrolling aware parent,
gtk_widget_set_scroll_adjustments() handles the emission.
Implementation of this signal is optional.
gtk.Widget.set_set_scroll_adjustments_signal is PyGtk's equivalent to
Gtk+/C setting the field set_scroll_adjustments_signal of the
GtkWidgetClass of your widget. Basically you have to define a signal
"my-signal" in your widget that accepts two gtk.Adjustment objects as
parameters, then do
MyClass.set_set_scroll_adjustments_signal("my-signal"). Of course you
still need to implement the scrolling by monitoring the adjustments and
updating the widget's view accordingly, but after that you can add your
widget to a scrolled window.
>
> Thanks,
>
> Laszlo
>
>
--
Gustavo J. A. M. Carneiro
<gjc at inescporto.pt> <gustavo at users.sourceforge.net>
"The universe is always one step beyond logic" -- Frank Herbert
More information about the pygtk
mailing list