From 3b48bce57b98a8949e4ced4cdd57aab8c3252cf0 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sat, 19 Mar 2011 22:22:28 -0400 Subject: [PATCH] update status on startup, In/Out handling --- Window.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/Window.py b/Window.py index 7f7dcc9..92ef34a 100644 --- a/Window.py +++ b/Window.py @@ -28,8 +28,6 @@ class Window: self.window.connect("destroy", self.destroy_event) self.window.connect("key-press-event", self.window_key_press_event) - gobject.timeout_add(1000, self.update_status_event) - # Menu Bar self.menubar = gtk.MenuBar() m = gtk.Menu() @@ -57,12 +55,14 @@ class Window: self.updateProjects() # Bottom Control Bar - self.status_label = gtk.Label('No mark set') + self.status_label = gtk.Label() self.status_label.set_alignment(0.0, 0.5) self.status_label.set_padding(5, 0) adjust_button = gtk.Button('Adjust') in_button = gtk.Button('In') + in_button.connect("clicked", self.in_event) out_button = gtk.Button('Out') + out_button.connect("clicked", self.out_event) exit_button = gtk.Button('Exit') exit_button.connect("clicked", self.destroy_event) @@ -79,6 +79,9 @@ class Window: vbox.pack_end(hbox, expand = False) vbox.pack_end(gtk.HSeparator(), expand = False) + self.update_status_event() + gobject.timeout_add(1000, self.update_status_event) + self.window.add(vbox) def updateProjects(self): @@ -376,6 +379,10 @@ class Window: def destroy_event(self, widget, data=None): # could be called by window or exit button # save any config changes + if self.mark is not None: + self.config.set('mark', self.mark.strftime(DT_FORMAT)) + else: + self.config.clear('mark') self.config.write() gtk.main_quit() @@ -393,6 +400,16 @@ class Window: hours = td.seconds / 60 / 60 mins = (td.seconds - hours * 60 * 60) / 60 secs = (td.seconds - hours * 60 * 60 - mins * 60) + # TODO: smarter / shorter status text self.status_label.set_text('Mark: %s; Elapsed: %dd %dh %dm %ds' % \ (self.mark.strftime(DT_FORMAT), days, hours, mins, secs)) + else: + self.status_label.set_text('No mark set') return True + + def in_event(self, widget, data=None): + if self.mark is None: + self.mark = datetime.now() + + def out_event(self, widget, data=None): + self.mark = None