move Gtk-specific idle_add() and main() into ui

This commit is contained in:
Daniel Pavel 2013-06-07 14:37:03 +02:00
parent 10e736386b
commit ffab6c0e12
2 changed files with 11 additions and 9 deletions

View File

@ -96,17 +96,18 @@ def _run(args):
from logitech.unifying_receiver.status import ALERT
def status_changed(device, alert=ALERT.NONE, reason=None):
assert device is not None
# print ("status changed", device, reason)
if _log.isEnabledFor(_DEBUG):
_log.debug("status changed: %s, %s, %s", device, alert, reason)
GLib.idle_add(ui.status_icon.update, status_icon, device)
ui.async(ui.status_icon.update, status_icon, device)
if alert & ALERT.ATTENTION:
GLib.idle_add(ui.status_icon.attention, status_icon, reason)
ui.async(ui.status_icon.attention, status_icon, reason)
need_popup = alert & (ALERT.SHOW_WINDOW | ALERT.ATTENTION)
GLib.idle_add(ui.main_window.update, device, need_popup, status_icon)
ui.async(ui.main_window.update, device, need_popup, status_icon)
if alert & ALERT.NOTIFICATION:
GLib.idle_add(ui.notify.show, device, reason)
ui.async(ui.notify.show, device, reason)
# ugly...
def _startup_check_receiver():
@ -121,10 +122,8 @@ def _run(args):
from logitech.unifying_receiver import base as _base
# receiver add/remove events will start/stop listener threads
GLib.timeout_add(10, _base.notify_on_receivers, handle_receivers_events)
from gi.repository import Gtk
Gtk.main()
# this is unnecessary for the Gtk.StatusIcon implementation
# but the AppIdicator implementation may need it to make the indicator go away
# main UI event loop
ui.run_loop()
ui.status_icon.destroy(status_icon)
for l in listeners.values():

View File

@ -8,6 +8,9 @@ from __future__ import absolute_import, division, print_function, unicode_litera
from gi.repository import GLib, Gtk
GLib.threads_init()
async = GLib.idle_add
run_loop = Gtk.main
def error_dialog(title, text):
m = Gtk.MessageDialog(None, Gtk.DialogFlags.MODAL, Gtk.MessageType.ERROR, Gtk.ButtonsType.CLOSE, text)