im trying to port some small examples from PyGTK to the new PyGobject bindings, but ive hit a roadblock with a popupmenu, despite getting no errors, no menu is being shown on rightclick, here is the code,
from gi.repository import Gtk
class aStatusIcon:
def __init__(self):
self.statusicon = Gtk.StatusIcon()
self.statusicon.set_from_stock(Gtk.STOCK_HOME)
self.statusicon.connect("popup-menu", self.right_click_event)
window = Gtk.Window()
window.connect("destroy", lambda w: Gtk.main_quit())
window.show_all()
def right_click_event(self, icon, button, time):
menu = Gtk.Menu()
about = Gtk.MenuItem()
about.set_label("About")
quit = Gtk.MenuItem()
quit.set_label("Quit")
about.connect("activate", self.show_about_dialog)
quit.connect("activate", Gtk.main_quit)
menu.append(about)
menu.append(quit)
menu.show_all()
#menu.popup(None, None, gtk.status_icon_position_menu, button, time, self.statusicon) # previous working pygtk line
menu.popup(None, None, None, Gtk.StatusIcon.position_menu, button, time) #i assume this is problem line
def show_about_dialog(self, widget):
about_dialog = Gtk.AboutDialog()
about_dialog.set_destroy_with_parent(True)
about_dialog.set_name("StatusIcon Example")
about_dialog.set_version("1.0")
about_dialog.set_authors(["Andrew Steele"])
about_dialog.run()
about_dialog.destroy()
aStatusIcon()
Gtk.main()
i assume the problem is im not telling the menu about self.statusicon in there, but it doesnt work in any of the args since they all want a widget arg or none, not a statusicon, any smart ppl here got an idea where im going wrong?
StatusIcon.position_menu
in the documentation forGtk.StatusIcon
. I seegtk.status_icon_position_menu
, which clearly accepts aStatusIcon
. Does that not work anymore? (Related question: are you Hairy_Palms? You don't have to answer that.) – LatishStatusIcon
, callStatusIcon.get_geometry()
, and return a(x, y, push_in)
tuple. But that's a WAG, and assumes that these functions haven't changed. (BTW, has themenu.popup
signature really changed, as your code suggests? That seems like some serious API breakage if so.) – Latishself.popup_for_device(None, parent_menu_shell, parent_menu_item, func, data, button, activate_time)
compared to the oldself.popup(parent_menu_shell, parent_menu_item, func, button, activate_time, data=None)
or at least it says it is, which is the problem :( since the arguments dont seem to match to what they are supposed to according to the reference. – Thaumatrope