103 lines
3.0 KiB
Python
103 lines
3.0 KiB
Python
|
|
import gtk
|
|
import gobject
|
|
from datetime import datetime
|
|
|
|
class CmdWindow:
|
|
def __init__(self, handle_activated):
|
|
self.starttime = None
|
|
self.handle_activated = handle_activated
|
|
|
|
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
|
|
self.window.set_geometry_hints(min_width = 350);
|
|
self.window.connect("delete_event", self.delete_event)
|
|
self.window.connect("destroy", self.destroy_event)
|
|
self.entry = gtk.Entry()
|
|
self.entry.connect("activate", self.activate_event)
|
|
self.button = gtk.Button(stock = gtk.STOCK_OK)
|
|
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.pack_start(self.status_hbox)
|
|
vbox.pack_start(self.error_label)
|
|
vbox.pack_start(self.formatted_label)
|
|
gobject.timeout_add(1000, self.updateElapsed)
|
|
|
|
hbox = gtk.HBox()
|
|
hbox.pack_start(self.entry)
|
|
hbox.pack_start(self.button, expand = False)
|
|
hbox.show_all()
|
|
vbox.pack_start(hbox)
|
|
|
|
vbox.show()
|
|
|
|
self.window.add(vbox)
|
|
|
|
def main(self):
|
|
self.window.show()
|
|
gtk.main()
|
|
|
|
def delete_event(self, widget, event, data=None):
|
|
return False
|
|
|
|
def destroy_event(self, widget, data=None):
|
|
gtk.main_quit()
|
|
|
|
def activate_event(self, widget, data=None):
|
|
if not self.handle_activated(self.entry.get_text(), self):
|
|
self.window.destroy()
|
|
|
|
def getElapsed(self):
|
|
if self.starttime is None:
|
|
return ''
|
|
delta = datetime.now() - self.starttime
|
|
days = delta.days
|
|
dsecs = delta.seconds
|
|
hours = dsecs / (60 * 60)
|
|
dsecs -= hours * 60 * 60
|
|
minutes = dsecs / 60
|
|
dsecs -= minutes * 60
|
|
seconds = dsecs
|
|
elapsed = ''
|
|
if days != 0:
|
|
elapsed = '%dd ' % days
|
|
elapsed += '%d:%02d:%02d' % (hours, minutes, seconds)
|
|
return elapsed
|
|
|
|
def updateElapsed(self):
|
|
self.elapsed_label.set_text(self.getElapsed())
|
|
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()
|