hamster-applet r801 - trunk/hamster



Author: tbaugis
Date: Thu Feb 26 09:16:33 2009
New Revision: 801
URL: http://svn.gnome.org/viewvc/hamster-applet?rev=801&view=rev

Log:
now it is possible to start all the windows from command line.
except for about, because that does not make particular sense

Modified:
   trunk/hamster/applet.py
   trunk/hamster/edit_activity.py
   trunk/hamster/hamster-applet.py
   trunk/hamster/preferences.py
   trunk/hamster/stats.py

Modified: trunk/hamster/applet.py
==============================================================================
--- trunk/hamster/applet.py	(original)
+++ trunk/hamster/applet.py	Thu Feb 26 09:16:33 2009
@@ -361,7 +361,7 @@
             (model, iter) = selection.get_selected()
             fact_id = model[iter][0]
                 
-            custom_fact = CustomFactController(None, fact_id)
+            custom_fact = CustomFactController(self, None, fact_id)
             custom_fact.show()
             return True
         
@@ -422,7 +422,7 @@
             self.notify.msg(msg, self.edit_cb, self.switch_cb)
 
     def edit_cb(self, n, action):
-        custom_fact = CustomFactController(None, self.last_activity['id'])
+        custom_fact = CustomFactController(self, None, self.last_activity['id'])
         custom_fact.show()
 
     def switch_cb(self, n, action):
@@ -622,14 +622,14 @@
 
     def on_overview(self, menu_item):
         dispatcher.dispatch('panel_visible', False)
-        stats_viewer = StatsViewer()
+        stats_viewer = StatsViewer(self)
         stats_viewer.show()
 
     def show_overview(self, menu_item, verb):
         return self.on_overview(menu_item)
 
     def on_custom_fact(self, menu_item):
-        custom_fact = CustomFactController()
+        custom_fact = CustomFactController(self)
         custom_fact.show()
 
     def on_about (self, component, verb):
@@ -644,7 +644,7 @@
         if self.preferences_editor and self.preferences_editor.window:
             self.preferences_editor.window.present()
         else:
-            self.preferences_editor = PreferencesEditor()
+            self.preferences_editor = PreferencesEditor(self)
             self.preferences_editor.show()
     
     """signals"""

Modified: trunk/hamster/edit_activity.py
==============================================================================
--- trunk/hamster/edit_activity.py	(original)
+++ trunk/hamster/edit_activity.py	Thu Feb 26 09:16:33 2009
@@ -245,11 +245,9 @@
         context.stroke()
 
 
-
-
-
 class CustomFactController:
-    def __init__(self,  fact_date = None, fact_id = None):
+    def __init__(self,  parent = None, fact_date = None, fact_id = None):
+        self.parent = parent
         self.glade = gtk.glade.XML(os.path.join(SHARED_DATA_DIR, GLADE_FILE))
         self.window = self.get_widget('custom_fact_window')
 
@@ -280,12 +278,6 @@
             self.get_widget("save_button").set_label("gtk-save")
             self.window.set_title(_("Update activity"))
 
-            if not end_date:
-                if start_date.date() == dt.date.today():
-                    end_date = dt.datetime.now()
-                else:
-                    end_date = end_date or start_date + dt.timedelta(minutes = 30)
-
         elif fact_date and fact_date != dt.date.today():
             # we are asked to add task in some day, but time has not
             # been specified - two things we can do
@@ -305,9 +297,13 @@
                                                   fact_date.month,
                                                   fact_date.day,
                                                   8)
-        else:
-            start_date = dt.datetime.now()
-            end_date = start_date + dt.timedelta(minutes = 30)
+
+        start_date = start_date or dt.datetime.now()
+        if not end_date:
+            if start_date.date() == dt.date.today():
+                end_date = dt.datetime.now()
+            else:
+                end_date = end_date or start_date + dt.timedelta(minutes = 30)
 
         self.dayline = Dayline()
         self.dayline.on_time_changed = self.update_time
@@ -561,7 +557,7 @@
         if not self.fact_id: 
             dispatcher.dispatch('panel_visible', False)
         
-        self.window.destroy()
+        self.close_window()
     
     def figure_date(self, date_str):
         if not date_str:
@@ -785,7 +781,7 @@
         
         
     def on_cancel_clicked(self, button):
-        self.window.destroy()
+        self.close_window()
         
     def on_activity_combo_changed(self, combo):
         self.validate_fields()
@@ -820,7 +816,16 @@
             if self.calendar_window.get_property("visible") or \
                self.time_window.get_property("visible"):
                 return False
-            
-            self.window.destroy()
 
+            self.close_window()            
+
+    def on_close(self, widget, event):
+        self.close_window()        
 
+    def close_window(self):
+        if not self.parent:
+            gtk.main_quit()
+        else:
+            self.window.destroy()
+            return False
+        
\ No newline at end of file

Modified: trunk/hamster/hamster-applet.py
==============================================================================
--- trunk/hamster/hamster-applet.py	(original)
+++ trunk/hamster/hamster-applet.py	Thu Feb 26 09:16:33 2009
@@ -74,34 +74,31 @@
     gtk.main_quit()
 
 def usage():
-    print _(u"""=== Time tracking applet: Usage
+    print _(u"""Time tracker: Usage
 $ hamster-applet [OPTIONS]
 
 OPTIONS:
-    -w, --window    Launch the applet in a standalone window for test purposes (default=no).
-    -o, --overview  Launch just the overview window
+    -w, --window   Launch the applet in a standalone window for test purposes (default=no).
+    -s, --start    [stats|edit|prefs] Which window to launch on startup.
+                   Use "stats" for overview window, "edit" to add new activity
+                   and "prefs" to launch preferences
     """)
     sys.exit()
 
 if __name__ == "__main__":
     standalone = False
-    show_overview = False
+    start_window = None
 
     try:
-        opts, args = getopt.getopt(sys.argv[1:], "wo", ["window", "overview"])
+        opts, args = getopt.getopt(sys.argv[1:], "ws:", ["window", "start="])
     except getopt.GetoptError:
-        # Unknown args were passed, we fallback to bahave as if
-        # no options were passed
-        print "WARNING: Unknown arguments passed, using defaults."
-        opts = []
-        args = sys.argv[1:]
+        usage() 
 
-    for o, a in opts:
-        if o in ("-w", "--window"):
+    for opt, args in opts:
+        if opt in ("-w", "--window"):
             standalone = True
-        elif o in ("-o", "--overview"):
-            show_overview = True
-
+        elif opt in ("-s", "--start"):
+            start_window = args
 
     gtk.window_set_default_icon_name("hamster-applet")
 
@@ -118,10 +115,17 @@
 
         gtk.main()
 
-    elif show_overview:
-        from hamster.stats import StatsViewer
-        stats_viewer = StatsViewer(True)
-        stats_viewer.show()
+    elif start_window:
+        if start_window == "stats":
+            from hamster.stats import StatsViewer
+            stats_viewer = StatsViewer().show()
+        elif start_window == "edit":
+            from hamster.edit_activity import CustomFactController
+            CustomFactController().show()
+        elif start_window == "prefs":
+            from hamster.preferences import PreferencesEditor
+            PreferencesEditor().show()
+            
         gtk.main()
 
     else:

Modified: trunk/hamster/preferences.py
==============================================================================
--- trunk/hamster/preferences.py	(original)
+++ trunk/hamster/preferences.py	Thu Feb 26 09:16:33 2009
@@ -89,7 +89,8 @@
         ]
     
     
-    def __init__(self):
+    def __init__(self, parent = None):
+        self.parent = parent
         self.glade = gtk.glade.XML(os.path.join(SHARED_DATA_DIR, "preferences.glade"))
         self.config = GconfStore.get_instance()
         self.window = self.get_widget('preferences_window')
@@ -488,7 +489,7 @@
         # ctrl+w means close window
         if (event.keyval == gtk.keysyms.w \
             and event.state & gtk.gdk.CONTROL_MASK):
-            self.window.destroy()
+            self.close_window()
 
         # escape can mean several things
         if event.keyval == gtk.keysyms.Escape:
@@ -500,7 +501,7 @@
                 self.categoryCell.set_property("editable", False)
                 return
 
-            self.window.destroy()     
+            self.close_window()     
 
     """button events"""
     def on_add_category_clicked(self, button):
@@ -554,7 +555,17 @@
         self.activity_changed(self.selection, model)
 
     def on_close_button_clicked(self, button):
-        self.window.destroy()
+        self.close_window()
+
+    def on_close(self, widget, event):
+        self.close_window()        
+    
+    def close_window(self):
+        if not self.parent:
+            gtk.main_quit()
+        else:
+            self.window.destroy()
+            return False
 
     def on_shutdown_track_toggled(self, checkbox):
         self.config.set_stop_on_shutdown(checkbox.get_active())

Modified: trunk/hamster/stats.py
==============================================================================
--- trunk/hamster/stats.py	(original)
+++ trunk/hamster/stats.py	Thu Feb 26 09:16:33 2009
@@ -35,8 +35,8 @@
 import time
 
 class StatsViewer(object):
-    def __init__(self, main_window = False):
-        self.main_window = main_window
+    def __init__(self, parent = None):
+        self.parent = parent# determine if app shut shut down on close
         self.glade = gtk.glade.XML(os.path.join(SHARED_DATA_DIR, "stats.glade"))
         self.window = self.get_widget('stats_window')
 
@@ -482,7 +482,7 @@
         if model[iter][0] == -1:
             return #not a fact
 
-        custom_fact = CustomFactController(None, model[iter][0])
+        custom_fact = CustomFactController(self, None, model[iter][0])
         custom_fact.show()
 
     def delete_selected(self):
@@ -524,7 +524,7 @@
     def on_facts_row_activated(self, tree, path, column):
         selection = tree.get_selection()
         (model, iter) = selection.get_selected()
-        custom_fact = CustomFactController(None, model[iter][0])
+        custom_fact = CustomFactController(self, None, model[iter][0])
         custom_fact.show()
         
     def on_add_clicked(self, button):
@@ -538,7 +538,7 @@
                                     int(selected_date[1]),
                                     int(selected_date[2]))
 
-        custom_fact = CustomFactController(selected_date)
+        custom_fact = CustomFactController(self, selected_date)
         custom_fact.show()
         
     def on_report_button_clicked(self, widget):
@@ -556,18 +556,22 @@
     def on_close(self, widget, event):
         dispatcher.del_handler('activity_updated', self.after_activity_update)
         dispatcher.del_handler('day_updated', self.after_fact_update)
-        
-        if self.main_window:
-            gtk.main_quit()
-        else:
-            return False
+        self.close_window()        
 
     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.window.destroy()
+        self.close_window()
+    
     
+    def close_window(self):
+        if not self.parent:
+            gtk.main_quit()
+        else:
+            self.window.destroy()
+            return False
+        
     def show(self):
         self.window.show()
 



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