allowed command window to persist across commands
This commit is contained in:
parent
7a10dd335a
commit
5fb84110e1
64
CmdWindow.py
64
CmdWindow.py
@ -4,8 +4,9 @@ import gobject
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
class CmdWindow:
|
class CmdWindow:
|
||||||
def __init__(self, status = '', starttime = None):
|
def __init__(self, handle_activated):
|
||||||
self.starttime = starttime
|
self.starttime = None
|
||||||
|
self.handle_activated = handle_activated
|
||||||
|
|
||||||
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
|
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
|
||||||
self.window.set_geometry_hints(min_width = 350);
|
self.window.set_geometry_hints(min_width = 350);
|
||||||
@ -16,29 +17,35 @@ class CmdWindow:
|
|||||||
self.button = gtk.Button(stock = gtk.STOCK_OK)
|
self.button = gtk.Button(stock = gtk.STOCK_OK)
|
||||||
self.button.connect("clicked", self.activate_event)
|
self.button.connect("clicked", self.activate_event)
|
||||||
|
|
||||||
|
self.status_hbox = gtk.HBox()
|
||||||
|
self.status_label = gtk.Label('')
|
||||||
|
self.elapsed_label = gtk.Label('')
|
||||||
|
self.status_hbox.pack_start(self.status_label, expand = False)
|
||||||
|
self.status_hbox.pack_end(self.elapsed_label, expand = False)
|
||||||
|
|
||||||
|
self.error_label = gtk.Label('')
|
||||||
|
|
||||||
|
self.formatted_label = gtk.Label('')
|
||||||
|
|
||||||
vbox = gtk.VBox()
|
vbox = gtk.VBox()
|
||||||
if status != '':
|
vbox.pack_start(self.status_hbox)
|
||||||
hbox = gtk.HBox()
|
vbox.pack_start(self.error_label)
|
||||||
lbl = gtk.Label(status)
|
vbox.pack_start(self.formatted_label)
|
||||||
hbox.pack_start(lbl, expand = False)
|
|
||||||
if starttime is not None:
|
|
||||||
self.elapsedlabel = gtk.Label(self.getElapsed())
|
|
||||||
gobject.timeout_add(1000, self.updateElapsed)
|
gobject.timeout_add(1000, self.updateElapsed)
|
||||||
hbox.pack_end(self.elapsedlabel, expand = False)
|
|
||||||
vbox.pack_start(hbox)
|
|
||||||
|
|
||||||
hbox = gtk.HBox()
|
hbox = gtk.HBox()
|
||||||
hbox.pack_start(self.entry)
|
hbox.pack_start(self.entry)
|
||||||
hbox.pack_start(self.button, expand = False)
|
hbox.pack_start(self.button, expand = False)
|
||||||
|
hbox.show_all()
|
||||||
vbox.pack_start(hbox)
|
vbox.pack_start(hbox)
|
||||||
|
|
||||||
|
vbox.show()
|
||||||
|
|
||||||
self.window.add(vbox)
|
self.window.add(vbox)
|
||||||
self.window.show_all()
|
|
||||||
|
|
||||||
def main(self):
|
def main(self):
|
||||||
self.text = ''
|
self.window.show()
|
||||||
gtk.main()
|
gtk.main()
|
||||||
return self.text
|
|
||||||
|
|
||||||
def delete_event(self, widget, event, data=None):
|
def delete_event(self, widget, event, data=None):
|
||||||
return False
|
return False
|
||||||
@ -47,10 +54,12 @@ class CmdWindow:
|
|||||||
gtk.main_quit()
|
gtk.main_quit()
|
||||||
|
|
||||||
def activate_event(self, widget, data=None):
|
def activate_event(self, widget, data=None):
|
||||||
self.text = self.entry.get_text()
|
if not self.handle_activated(self.entry.get_text(), self):
|
||||||
self.window.destroy()
|
self.window.destroy()
|
||||||
|
|
||||||
def getElapsed(self):
|
def getElapsed(self):
|
||||||
|
if self.starttime is None:
|
||||||
|
return ''
|
||||||
delta = datetime.now() - self.starttime
|
delta = datetime.now() - self.starttime
|
||||||
days = delta.days
|
days = delta.days
|
||||||
dsecs = delta.seconds
|
dsecs = delta.seconds
|
||||||
@ -60,11 +69,34 @@ class CmdWindow:
|
|||||||
dsecs -= minutes * 60
|
dsecs -= minutes * 60
|
||||||
seconds = dsecs
|
seconds = dsecs
|
||||||
elapsed = ''
|
elapsed = ''
|
||||||
if days > 0:
|
if days != 0:
|
||||||
elapsed = '%dd ' % days
|
elapsed = '%dd ' % days
|
||||||
elapsed += '%d:%02d:%02d' % (hours, minutes, seconds)
|
elapsed += '%d:%02d:%02d' % (hours, minutes, seconds)
|
||||||
return elapsed
|
return elapsed
|
||||||
|
|
||||||
def updateElapsed(self):
|
def updateElapsed(self):
|
||||||
self.elapsedlabel.set_text(self.getElapsed())
|
self.elapsed_label.set_text(self.getElapsed())
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def setStatus(self, status, starttime):
|
||||||
|
if status != '':
|
||||||
|
self.status_label.set_text(status)
|
||||||
|
self.starttime = starttime
|
||||||
|
self.updateElapsed()
|
||||||
|
self.status_hbox.show_all()
|
||||||
|
else:
|
||||||
|
self.status_hbox.hide_all()
|
||||||
|
|
||||||
|
def setError(self, error):
|
||||||
|
self.error_label.set_text(error)
|
||||||
|
if error != '':
|
||||||
|
self.error_label.show()
|
||||||
|
else:
|
||||||
|
self.error_label.hide()
|
||||||
|
|
||||||
|
def setFormatted(self, formatted):
|
||||||
|
self.formatted_label.set_text(formatted)
|
||||||
|
if formatted != '':
|
||||||
|
self.formatted_label.show()
|
||||||
|
else:
|
||||||
|
self.formatted_label.hide()
|
||||||
|
29
dwtt
29
dwtt
@ -38,24 +38,35 @@ def main(argv):
|
|||||||
|
|
||||||
ds = DataStore(timedbfile)
|
ds = DataStore(timedbfile)
|
||||||
|
|
||||||
while True:
|
def handleActivated(cmdline, cw):
|
||||||
status = ''
|
if cmdline.strip() == '':
|
||||||
starttime = None
|
return False
|
||||||
ct = ds.getCurrentTask()
|
ct = ds.getCurrentTask()
|
||||||
if ct is not None:
|
if ct is not None:
|
||||||
task = ds.getTaskByID(ct.taskid)
|
task = ds.getTaskByID(ct.taskid)
|
||||||
status = 'Task: ' + ds.getTaskPath(task)
|
status = 'Task: ' + ds.getTaskPath(task)
|
||||||
if task.longname != '':
|
if task.longname != '':
|
||||||
status += ' (%s)' % task.longname
|
status += ' (%s)' % task.longname
|
||||||
starttime = ct.time
|
cw.setStatus(status, ct.time)
|
||||||
cw = CmdWindow(status, starttime)
|
else:
|
||||||
cmdline = cw.main()
|
cw.setStatus('', None)
|
||||||
if cmdline.strip() == '':
|
|
||||||
break
|
|
||||||
cmd = Command(cmdline)
|
cmd = Command(cmdline)
|
||||||
res = processCommand(cmd, ds)
|
res = processCommand(cmd, ds)
|
||||||
if not res.keepwindow:
|
if not res.keepwindow:
|
||||||
break
|
return False
|
||||||
|
cw.setError(res.error)
|
||||||
|
cw.setFormatted(res.formatted)
|
||||||
|
return True
|
||||||
|
|
||||||
|
cw = CmdWindow(handleActivated)
|
||||||
|
ct = ds.getCurrentTask()
|
||||||
|
if ct is not None:
|
||||||
|
task = ds.getTaskByID(ct.taskid)
|
||||||
|
status = 'Task: ' + ds.getTaskPath(task)
|
||||||
|
if task.longname != '':
|
||||||
|
status += ' (%s)' % task.longname
|
||||||
|
cw.setStatus(status, ct.time)
|
||||||
|
cw.main()
|
||||||
|
|
||||||
class Result:
|
class Result:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user