On 4 June 2012 11:53, Amy C <[email protected]> wrote:
> Hi all,
>
> Is there a way to programmatically ask an object if it has a
> particular signal, or get a list of signals it has?
Worked it out - found the relevant documentation in 'GObject signals'[0].
Suppose I want to see if global.window_manager has signal 'map'.
Then I can use:
const GObject = imports.gi.GObject;
GObject.signal_lookup('map', GObject.type_from_name('ShellWM'));
This returns the signal's ID, or 0 if the signal does not exist.
As to getting the GType from the class name - I typed
'global.window_manager' into the looking glass and saw that its class
is 'Shell.WM', and so used GObject.type_from_name( name_of_class ) to
obtain the type[1].
Name of the class is probably the string [namespace][classname], i.e.
without the '.' in between.
There is a macro G_TYPE_FROM_CLASS and G_TYPE_FROM_INSTANCE that (to
me) seems more useful than type_from_name - something like
`GObject.type_from_instance(global.window_manager)` - but as far as I
can tell they aren't in the introspection interface.
Hope that helps someone.
[0]:http://developer.gnome.org/gobject/stable/gobject-Signals.html
[1]:http://developer.gnome.org/gobject/stable/gobject-Type-Information.html#g-type-from-name
_______________________________________________
gnome-shell-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/gnome-shell-list