From 7e9886cd68be7c9a5ebb47eef93253bb006814b0 Mon Sep 17 00:00:00 2001 From: Jon Lund Steffensen Date: Sun, 30 Jul 2017 20:16:50 -0700 Subject: controller: Emit signal when stopped --- src/redshift-gtk/controller.py | 6 ++++-- src/redshift-gtk/statusicon.py | 5 +++++ 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/redshift-gtk/controller.py b/src/redshift-gtk/controller.py index a1591c8..24c58ae 100644 --- a/src/redshift-gtk/controller.py +++ b/src/redshift-gtk/controller.py @@ -37,8 +37,9 @@ class RedshiftController(GObject.GObject): 'temperature-changed': (GObject.SIGNAL_RUN_FIRST, None, (int,)), 'period-changed': (GObject.SIGNAL_RUN_FIRST, None, (str,)), 'location-changed': (GObject.SIGNAL_RUN_FIRST, None, (float, float)), - 'error-occured': (GObject.SIGNAL_RUN_FIRST, None, (str,)) - } + 'error-occured': (GObject.SIGNAL_RUN_FIRST, None, (str,)), + 'stopped': (GObject.SIGNAL_RUN_FIRST, None, ()), + } def __init__(self, args): """Initialize controller and start child process. @@ -159,6 +160,7 @@ class RedshiftController(GObject.GObject): self.emit('error-occured', self._errors) GLib.spawn_close_pid(self._process[0]) + self.emit('stopped') def _child_key_change_cb(self, key, value): """Called when the child process reports a change of internal state.""" diff --git a/src/redshift-gtk/statusicon.py b/src/redshift-gtk/statusicon.py index 9623a14..1dd8970 100644 --- a/src/redshift-gtk/statusicon.py +++ b/src/redshift-gtk/statusicon.py @@ -152,6 +152,7 @@ class RedshiftStatusIcon(object): 'temperature-changed', self.temperature_change_cb) self._controller.connect('location-changed', self.location_change_cb) self._controller.connect('error-occured', self.error_occured_cb) + self._controller.connect('stopped', self.controller_stopped_cb) # Set info box text self.change_inhibited(self._controller.inhibited) @@ -278,6 +279,10 @@ class RedshiftStatusIcon(object): # Quit when the model dialog is closed sys.exit(-1) + def controller_stopped_cb(self, controller): + """Callback when controlled is stopped successfully.""" + Gtk.main_quit() + # Update interface def change_inhibited(self, inhibited): """Change interface to new inhibition status.""" -- cgit v1.2.3-70-g09d2