2

I'm trying to port a program I made with pygtk, it's a popup menu launched via global shortcut (using keybinder) to run specific programs and commands. There is no main window in this program, the point is have a simple, fast and light "launcher" available anywhere, whenever I need it.

The old menu.popup used to work even when using 0 as event.time (since keybinder doesn't give an event I'd request a time for), but now I'm getting this error:

Warning: The property GtkStatusIcon:stock is deprecated and shouldn't be used anymore. It will be removed in a future version. self.icon.new_from_stock(Gtk.STOCK_OPEN)

This is an example I made up to show the problem:

from gi.repository import Gtk, Gdk
from gi.repository import Keybinder

menu_shortcut = "<Super>m"

class TestMenu:
    def __init__(self):
        self.menu = Gtk.Menu()
        item = Gtk.MenuItem('various items')
        self.menu.add(item)
        item = Gtk.MenuItem('Quit')
        item.connect('activate', Gtk.main_quit)
        self.menu.append(item)
        self.menu.show_all()
        self.icon = Gtk.StatusIcon()
        self.icon.new_from_stock(Gtk.STOCK_OPEN)
        self.icon.set_tooltip_text('MyMenu')
        self.icon.connect('popup-menu', self.popup, self.menu)

        Keybinder.init()
        Keybinder.bind(menu_shortcut, self.popup, 0, 0, self)

    def popup(self, widget, button, time, menu):
        self.menu.popup(None, None, None, None, button, time)

menu = TestMenu()
Gtk.main()

With this example I'm able to click the status icon and get the menu, but the keyboard shortcut just gives me the aforementioned error.

Note: the stock icon doesn't work, I'm still learning the new API.

musicamante
  • 41,230
  • 6
  • 33
  • 58

0 Answers0