[pygtk] Defining and using my own signals
samwyse
samwyse at gmail.com
Mon Sep 28 10:24:16 WST 2009
On Sun, Sep 27, 2009 at 5:44 PM, Saeed Rasooli <saeed.gnu at gmail.com> wrote:
> [ a bunch of code ]
>
> On 9/27/09, samwyse <samwyse at gmail.com> wrote:
> > I writing a pygtk app that will use a plug in architecture. I'm thinking
> > about reusing the existing signal mechanisms to trigger the plug-ins at
> the
> > appropriate times. The tutorials don't go into how to define your own
> > signals. Can anyone enlighten me? Thanks.
>
I seem to be missing something. Here's what I'm doing:
import gobject
class MyClass(gobject.GObject):
def __init__(self):
self.__gobject_init__()
gobject.type_register(MyClass)
gobject.signal_new(
'my-signal',
MyClass,
gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE,
[])
print 'known signals:', gobject.signal_list_names(MyClass)
def do_something(self):
print 'sending signal'
# TypeError: <...>: unknown signal name: my-signal
self.emit('my-signal')
print 'sent signal'
class Plugin(gobject.GObject):
def __init__(self, base):
self.__gobject_init__()
# TypeError: <...>: unknown signal name: my-signal
base.connect('my-signal', self.my_handler)
def my_handler(self, sender):
print 'inside handler'
if __name__ == '__main__':
print 'glib_version =', gobject.glib_version
print 'pygobject_version =', gobject.pygobject_version
print 'pygtk_version =', gobject.pygtk_version
myobject = MyClass()
plugin = Plugin(myobject)
myobject.do_something()
When I run it, I get this:
glib_version = (2, 18, 4)
pygobject_version = (2, 14, 2)
pygtk_version = (2, 14, 2)
known signals: ('my-signal',)
Traceback (most recent call last):
File "C:\Documents and Settings\...\signals.py", line 30, in <module>
plugin = Plugin(myobject)
File "C:\Documents and Settings\...\signals.py", line 24, in __init__
base.connect('my-signal', self.my_handler)
TypeError: <MyClass object at 0x15094e0 (GObject at 0xfd28c0)>: unknown
signal name: my-signal
Any ideas? Thanks in advance.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.daa.com.au/pipermail/pygtk/attachments/20090927/f558a230/attachment.htm
More information about the pygtk
mailing list