update status on startup, In/Out handling

This commit is contained in:
Josh Holtrop 2011-03-19 22:22:28 -04:00
parent e125972edd
commit 3b48bce57b

View File

@ -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