[hamster-applet] menu and keyboard accelerators



commit 8663dace2fc6c58ae40bd5a7a9c60979d3bc5b83
Author: Toms Bauģis <toms baugis gmail com>
Date:   Sat Jan 23 01:08:06 2010 +0000

    menu and keyboard accelerators

 data/hamster.ui   |   54 ++++++++++++++++++++++++++++++++++++++++++++--------
 src/standalone.py |   53 ++++++++++++++++++++++++---------------------------
 2 files changed, 70 insertions(+), 37 deletions(-)
---
diff --git a/data/hamster.ui b/data/hamster.ui
index 9c74e39..7cd2838 100644
--- a/data/hamster.ui
+++ b/data/hamster.ui
@@ -7,7 +7,6 @@
     <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
     <property name="title" translatable="yes">Time Tracker</property>
     <property name="icon_name">hamster-applet</property>
-    <signal name="key_press_event" handler="on_windows_keys"/>
     <signal name="configure_event" handler="on_window_configure_event"/>
     <child>
       <object class="GtkVBox" id="vbox1">
@@ -15,36 +14,42 @@
         <property name="orientation">vertical</property>
         <property name="spacing">10</property>
         <child>
-          <object class="GtkMenuBar" id="menubar1">
+          <object class="GtkMenuBar" id="menu">
             <property name="visible">True</property>
             <child>
               <object class="GtkMenuItem" id="menuitem1">
                 <property name="visible">True</property>
+                <property name="accel_path">&lt;hamster-applet&gt;/Tracking</property>
                 <property name="label" translatable="yes">_Tracking</property>
                 <property name="use_underline">True</property>
                 <child type="submenu">
                   <object class="GtkMenu" id="menu1">
                     <property name="visible">True</property>
+                    <property name="accel_group">accelgroup</property>
+                    <property name="accel_path">&lt;hamster-applet&gt;/tracking</property>
                     <child>
                       <object class="GtkMenuItem" id="menu_add_earlier">
                         <property name="visible">True</property>
-                        <property name="accel_path">/hamster/add</property>
+                        <property name="accel_path">&lt;hamster-applet&gt;/tracking/add</property>
                         <property name="label" translatable="yes">Add earlier activity</property>
+                        <signal name="activate" handler="on_menu_add_earlier_activate"/>
                       </object>
                     </child>
                     <child>
                       <object class="GtkMenuItem" id="menu_overview">
                         <property name="visible">True</property>
-                        <property name="accel_path">/hamster/overview</property>
+                        <property name="accel_path">&lt;hamster-applet&gt;/tracking/overview</property>
                         <property name="label" translatable="yes">Overview</property>
+                        <signal name="activate" handler="on_menu_overview_activate"/>
                       </object>
                     </child>
                     <child>
                       <object class="GtkMenuItem" id="menu_statistics">
                         <property name="visible">True</property>
-                        <property name="accel_path">/hamster/statistics</property>
+                        <property name="accel_path">&lt;hamster-applet&gt;/tracking/stats</property>
                         <property name="label" translatable="yes">Statistics</property>
                         <property name="use_underline">True</property>
+                        <signal name="activate" handler="on_menu_statistics_activate"/>
                       </object>
                     </child>
                     <child>
@@ -56,9 +61,34 @@
                       <object class="GtkImageMenuItem" id="quit">
                         <property name="label">gtk-quit</property>
                         <property name="visible">True</property>
-                        <property name="accel_path">/hamster/quit</property>
+                        <property name="accel_path">&lt;hamster-applet&gt;/tracking/quit</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
+                        <signal name="activate" handler="close_window"/>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkMenuItem" id="menuitem2">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_Edit</property>
+                <property name="use_underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu" id="menu2">
+                    <property name="visible">True</property>
+                    <property name="accel_group">accelgroup</property>
+                    <property name="accel_path">&lt;hamster-applet&gt;/edit</property>
+                    <child>
+                      <object class="GtkImageMenuItem" id="menu_preferences">
+                        <property name="label">gtk-preferences</property>
+                        <property name="visible">True</property>
+                        <property name="accel_path">&lt;hamster-applet&gt;/edit/prefs</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <signal name="activate" handler="on_menu_preferences_activate"/>
                       </object>
                     </child>
                   </object>
@@ -68,26 +98,31 @@
             <child>
               <object class="GtkMenuItem" id="menuitem4">
                 <property name="visible">True</property>
+                <property name="accel_path">&lt;hamster-applet&gt;/help</property>
                 <property name="label" translatable="yes">_Help</property>
                 <property name="use_underline">True</property>
                 <child type="submenu">
                   <object class="GtkMenu" id="menu3">
                     <property name="visible">True</property>
+                    <property name="accel_group">accelgroup</property>
+                    <property name="accel_path">&lt;hamster-applet&gt;/help</property>
                     <child>
-                      <object class="GtkMenuItem" id="menu_contents">
+                      <object class="GtkMenuItem" id="menu_help_contents">
                         <property name="visible">True</property>
-                        <property name="accel_path">/hamster/contents</property>
+                        <property name="accel_path">&lt;hamster-applet&gt;/help/contents</property>
                         <property name="label" translatable="yes">Contents</property>
                         <property name="use_underline">True</property>
+                        <signal name="activate" handler="on_menu_help_contents_activate"/>
                       </object>
                     </child>
                     <child>
                       <object class="GtkImageMenuItem" id="menu_about">
                         <property name="label">gtk-about</property>
                         <property name="visible">True</property>
-                        <property name="accel_path">/hamster/about</property>
+                        <property name="accel_path">&lt;hamster-applet&gt;/help/about</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
+                        <signal name="activate" handler="on_menu_about_activate"/>
                       </object>
                     </child>
                   </object>
@@ -422,4 +457,5 @@
       </object>
     </child>
   </object>
+  <object class="GtkAccelGroup" id="accelgroup"/>
 </interface>
diff --git a/src/standalone.py b/src/standalone.py
index d61d8cb..9d4e0f7 100755
--- a/src/standalone.py
+++ b/src/standalone.py
@@ -138,8 +138,19 @@ class ProjectHamster(object):
             else:
                 self.window.set_position(gtk.WIN_POS_CENTER)
 
-        self.window.show_all()
 
+        # bindings
+        self.accel_group = self.get_widget("accelgroup")
+        self.window.add_accel_group(self.accel_group)
+
+        gtk.accel_map_add_entry("<hamster-applet>/tracking/add", gtk.keysyms.n, gtk.gdk.CONTROL_MASK)
+        gtk.accel_map_add_entry("<hamster-applet>/tracking/overview", gtk.keysyms.o, gtk.gdk.CONTROL_MASK)
+        gtk.accel_map_add_entry("<hamster-applet>/tracking/stats", gtk.keysyms.i, gtk.gdk.CONTROL_MASK)
+        gtk.accel_map_add_entry("<hamster-applet>/tracking/quit", gtk.keysyms.Escape, 0)
+        gtk.accel_map_add_entry("<hamster-applet>/edit/prefs", gtk.keysyms.p, gtk.gdk.CONTROL_MASK)
+        gtk.accel_map_add_entry("<hamster-applet>/help/contents", gtk.keysyms.F1, 0)
+
+        self.window.show_all()
 
     def init_workspace_tracking(self):
         if not wnck: # can't track if we don't have the trackable
@@ -183,11 +194,6 @@ class ProjectHamster(object):
             self.notification.update(_("Time Tracker"), message, "hamster-applet")
             self.notification.show()
 
-
-    def edit_cb(self, n, action):
-        dialogs.edit.show(self.applet, activity_id = self.last_activity['id'])
-
-
     def load_day(self):
         """sets up today's tree and fills it with records
            returns information about last activity"""
@@ -293,7 +299,7 @@ class ProjectHamster(object):
 
     def _open_edit_activity(self, row, fact):
         """opens activity editor for selected row"""
-        dialogs.edit.show(self.applet, fact_id = fact["id"])
+        dialogs.edit.show(self.window, fact_id = fact["id"])
 
     def on_today_row_activated(self, tree, path, column):
         fact = tree.get_selected_fact()
@@ -306,34 +312,25 @@ class ProjectHamster(object):
             runtime.dispatcher.dispatch('panel_visible', False)
 
 
-    def on_windows_keys(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)):
-            if self.new_name.popup.get_property("visible") == False \
-               and self.new_tags.popup.get_property("visible") == False:
-                runtime.dispatcher.dispatch('panel_visible', False)
-                return True
-        return False
-
     """button events"""
-    def on_overview(self, menu_item):
-        runtime.dispatcher.dispatch('panel_visible', False)
-        dialogs.overview.show(self.applet)
+    def on_menu_add_earlier_activate(self, menu):
+        dialogs.edit.show(self.window)
 
-    def show_overview(self, menu_item, verb):
-        return self.on_overview(menu_item)
+    def on_menu_overview_activate(self, menu_item):
+        dialogs.overview.show(self.window)
 
-    def on_custom_fact(self, menu_item):
-        dialogs.edit.show(self.applet)
+    def on_menu_about_activate(self, component):
+        dialogs.about.show(self.window)
 
-    def on_about (self, component, verb):
-        dialogs.about.show()
+    def on_menu_statistics_activate(self, component):
+        dialogs.stats.show(self.window)
 
-    def show_preferences(self, menu_item, verb):
+    def on_menu_preferences_activate(self, menu_item):
         runtime.dispatcher.dispatch('panel_visible', False)
-        dialogs.prefs.show(self.applet)
+        dialogs.prefs.show(self.window)
 
+    def on_menu_help_contents_activate(self, *args):
+        gtk.show_uri(gtk.gdk.Screen(), "ghelp:hamster-applet", 0L)
 
     """signals"""
     def after_activity_update(self, widget, renames):



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