Python AppIndicator bindings → howto проверить, открыто ли меню?
Вот минимальный пример AppIndicator:
#!/usr/bin/python
import gobject
import gtk
import appindicator
if __name__ == "__main__":
ind = appindicator.Indicator("example-simple-client", "gtk-execute", appindicator.CATEGORY_APPLICATION_STATUS)
ind.set_status (appindicator.STATUS_ACTIVE)
menu = gtk.Menu()
menu_items = gtk.MenuItem('Quit')
menu.append(menu_items)
menu_items.connect("activate", gtk.main_quit)
menu_items.show()
ind.set_menu(menu)
gtk.main()
К сожалению, документация по этому вопросу очень неполная. То, что я ищу, - это способ проверить, было ли открыто меню AppIndicator пользователем (например, щелчок на значке индикатора). Итак, есть ли сигнал, который выдается при открытии меню?
Ответы
Ответ 1
Похоже, что ответ не к сожалению.
print gobject.signal_list_names(ind)
('new-icon', 'new-attention-icon', 'new-status', 'new-label', 'x-ayatana-new-label', 'connection-changed', 'new-icon-theme-path')
Я попробовал их все, и ни один из них не активируется при нажатии на индикатор. Для того, что стоит, единственные разработчики, похоже, хотят, чтобы все индикаторы действовали единообразно, так что вполне возможно, что оно намеренно ограничено.
Ответ 2
На Launchpad имеется ошибка: https://bugs.launchpad.net/screenlets/+bug/522152
Обратите внимание, что для подменю AppIndicator доступен сигнал "активировать".