[hamster-applet] listen to escape and remove our expensive listener on close



commit 3d9b21b58c700c376e2ecefaacd4df5f7f9bafc2
Author: Toms Bauģis <toms baugis gmail com>
Date:   Wed Jan 20 11:10:45 2010 +0000

    listen to escape and remove our expensive listener on close

 data/stats.ui    |    2 +-
 hamster/stats.py |   15 ++++++++++++++-
 2 files changed, 15 insertions(+), 2 deletions(-)
---
diff --git a/data/stats.ui b/data/stats.ui
index 68bc10d..559f6c1 100644
--- a/data/stats.ui
+++ b/data/stats.ui
@@ -11,7 +11,7 @@
     <property name="default_height">550</property>
     <property name="icon_name">hamster-applet</property>
     <signal name="key_press_event" handler="on_window_key_pressed"/>
-    <signal name="delete_event" handler="on_close"/>
+    <signal name="delete_event" handler="on_stats_window_deleted"/>
     <child>
       <object class="GtkVBox" id="stats_box">
         <property name="visible">True</property>
diff --git a/hamster/stats.py b/hamster/stats.py
index 05013b2..57ba3c5 100644
--- a/hamster/stats.py
+++ b/hamster/stats.py
@@ -59,6 +59,8 @@ class Stats(object):
         self.init_stats()
 
         self.window.set_position(gtk.WIN_POS_CENTER)
+
+        self._gui.connect_signals(self)
         self.window.show_all()
         self.stats()
 
@@ -416,8 +418,19 @@ than 15 minutes you seem to be a busy bee." % ("<b>%d</b>" % short_percent))
         """ skip one variable (huh) """
         return self._gui.get_object(name)
 
+    def on_window_key_pressed(self, tree, event_key):
+      if (event_key.keyval == gtk.keysyms.Escape
+          or (event_key.keyval == gtk.keysyms.w
+              and event_key.state & gtk.gdk.CONTROL_MASK)):
+        self.close_window()
+
+    def on_stats_window_deleted(self, widget, event):
+        self.close_window()
 
     def close_window(self):
+        runtime.dispatcher.del_handler('activity_updated', self.after_fact_update)
+        runtime.dispatcher.del_handler('day_updated', self.after_fact_update)
+
         if not self.parent:
             gtk.main_quit()
         else:
@@ -426,5 +439,5 @@ than 15 minutes you seem to be a busy bee." % ("<b>%d</b>" % short_percent))
 
 
 if __name__ == "__main__":
-    stats_viewer = StatsViewer2()
+    stats_viewer = Stats()
     gtk.main()



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]