[pygtk] Popup menu for gnome applets.
Pedro Dalcin
ppdalcin at gmail.com
Tue Jan 22 22:16:07 WST 2008
I'm trying to create an applet that has a simple popup menu, but my menu
wont pop when I click on the button with the left mouse button, only with
the right mouse button! I really cant figure out what the problem is.... If
any one could help me would be great. Here is my code:
#!/usr/bin/env python
import pygtk
import sys
pygtk.require('2.0')
import gnomeapplet
import gtk
num =3D 0
def factory(applet, iid):
button =3D gtk.Button()
button.set_relief(gtk.RELIEF_NONE)
button.set_label("ExampleButton")
button.connect("button_press_event", showMenu, applet)
# button.connect("clicked", on_button_clicked) // im not using
"on_button_clicked right now
applet.add(button)
applet.show_all()
return True
def on_button_clicked(button, *args):
# button.emit_stop_by_name("button_press_event")
# create_menu(applet)
# this is only for change the buttons image
global num
if (num%2=3D=3D0):
image =3D gtk.Image()
image.set_from_file
("/usr/share/icons/gnome/48x48/devices/gnome-dev-floppy-red.png")
button.set_image(image)
button.set_label("")
else:
image =3D gtk.Image()
image.set_from_file
("/usr/share/icons/gnome/48x48/devices/gnome-dev-floppy-green.png")
button.set_image(image)
button.set_label("")
num=3Dnum+1
def showMenu(widget, event, applet):
global num
widget.emit_stop_by_name("button_press_event")
propxml=3D"""
<popup name=3D"button3">
<menuitem name=3D"Item 3" verb=3D"About" label=3D"_=
About"
pixtype=3D"stock" pixname=3D"gtk-about"/>
<menuitem name=3D"file-unlock"
verb=3D"file-unlock" label=3D"Unlock File" pixtype=3D"stoc=
k"
pixname=3D"revelation-unlock" />
<menuitem name=3D"file-lock"
verb=3D"file-lock" label=3D"Lock File" pixtype=3D"stoc=
k"
pixname=3D"revelation-lock" />
<menuitem name=3D"file-reload"
verb=3D"file-reload" label=3D"Reload File" pixtype=3D"stoc=
k"
pixname=3D"revelation-reload" />
<separator />
<menuitem name=3D"revelation"
verb=3D"revelation" label=3D"Start Revelation" pixtype=3D"stoc=
k"
pixname=3D"revelation-revelation" />
<menuitem name=3D"prefs"
verb=3D"prefs" label=3D"Preferences" pixtype=3D"stoc=
k"
pixname=3D"gtk-properties" />
<menuitem name=3D"about"
verb=3D"about" label=3D"About" pixtype=3D"stoc=
k"
pixname=3D"gnome-stock-about" />
</popup>"""
verbs =3D [("About", showAboutDialog)]
applet.setup_menu(propxml, verbs, None)
if (num%2=3D=3D0):
image =3D gtk.Image()
image.set_from_file
("/usr/share/icons/gnome/48x48/devices/gnome-dev-floppy-red.png")
widget.set_image(image)
widget.set_label("")
else:
image =3D gtk.Image()
image.set_from_file
("/usr/share/icons/gnome/48x48/devices/gnome-dev-floppy-green.png")
widget.set_image(image)
widget.set_label("")
num=3Dnum+1
def create_menu(applet):
propxml=3D"""
<popup name=3D"button3">
<menuitem name=3D"Item 3" verb=3D"About" label=3D"_=
About"
pixtype=3D"stock" pixname=3D"gtk-about"/>
<menuitem name=3D"file-unlock"
verb=3D"file-unlock" label=3D"Unlock File" pixtype=3D"stoc=
k"
pixname=3D"revelation-unlock" />
<menuitem name=3D"file-lock"
verb=3D"file-lock" label=3D"Lock File" pixtype=3D"stoc=
k"
pixname=3D"revelation-lock" />
<menuitem name=3D"file-reload"
verb=3D"file-reload" label=3D"Reload File" pixtype=3D"stoc=
k"
pixname=3D"revelation-reload" />
<separator />
<menuitem name=3D"revelation"
verb=3D"revelation" label=3D"Start Revelation" pixtype=3D"stoc=
k"
pixname=3D"revelation-revelation" />
<menuitem name=3D"prefs"
verb=3D"prefs" label=3D"Preferences" pixtype=3D"stoc=
k"
pixname=3D"gtk-properties" />
<menuitem name=3D"about"
verb=3D"about" label=3D"About" pixtype=3D"stoc=
k"
pixname=3D"gnome-stock-about" />
</popup>"""
verbs =3D [("About", showAboutDialog)]
applet.setup_menu(propxml, verbs, None)
def showAboutDialog(*arguments, **keywords):
pass
if len(sys.argv) =3D=3D 2:
if sys.argv[1] =3D=3D "run-in-window":
mainWindow =3D gtk.Window(gtk.WINDOW_TOPLEVEL)
mainWindow.set_title("Ubuntu System Panel")
mainWindow.connect("destroy", gtk.main_quit)
applet =3D gnomeapplet.Applet()
factory(applet, None)
applet.reparent(mainWindow)
mainWindow.show_all()
gtk.main()
sys.exit()
if __name__ =3D=3D '__main__':
print "Starting factory"
gnomeapplet.bonobo_factory("OAFIID:Gnome_Panel_Example_Factory",
gnomeapplet.Applet.__gtype__, "Simple gnome applet example", "1.0", factory)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.daa.com.au/pipermail/pygtk/attachments/20080122/a5366e46/at=
tachment.htm
More information about the pygtk
mailing list