Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Silbe <sascha-org-sugar-git@silbe.org>2009-03-27 18:48:23 (GMT)
committer Sascha Silbe <sascha-org-sugar-git@silbe.org>2009-03-27 18:48:23 (GMT)
commitc5f008a76831bc99c45bfdb7ec2e7259044a957d (patch)
tree25fc6e95c5d83f9ea9dc7a4b7077effe16811734
parent9e945efb04439a31bb3dd9e92b7ebc0ba377c6a0 (diff)
Proof of Concept GUI code (main window only)
-rwxr-xr-xgtktest.py106
1 files changed, 106 insertions, 0 deletions
diff --git a/gtktest.py b/gtktest.py
new file mode 100755
index 0000000..d707264
--- /dev/null
+++ b/gtktest.py
@@ -0,0 +1,106 @@
+#!/usr/bin/env python
+import os
+import sys
+import gobject
+import gtk
+
+PROGNAME = "soas-assimilator"
+
+
+class tMainWindow (gtk.Window) :
+
+ _listColumns = [
+ ('status', str, gtk.CellRendererText),
+ ('device', str, gtk.CellRendererText),
+ ('image', str, gtk.CellRendererText),
+ ('model', str, gtk.CellRendererText),
+ ('color', str, None),
+ ]
+ _colorColIdx = len(_listColumns)-1
+ _colorMap = {
+ 'writing': '#FFFF00',
+ 'finished': '#00FF00',
+ 'error': '#FF0000',
+ }
+
+ def __init__(self, model, title) :
+ gtk.Window.__init__(self)
+ self._model = model
+ self.set_title(title)
+ self._initWidgets()
+
+ def setStatus(self, device, status, image, model) :
+ row = self._findRow(device)
+ if row is None :
+ row = self._listModel.append()
+
+ self._listModel[row] = (status, device, image, model, self._colorMap[status])
+
+ def _initWidgets(self) :
+ self._vbox = gtk.VBox()
+ self.add(self._vbox)
+ self._scrolledList = gtk.ScrolledWindow()
+ self._scrolledList.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+ self._vbox.pack_start(self._scrolledList)
+ self._listModel = gtk.ListStore(*[_type for (name, _type, r) in self._listColumns])
+ self._listView = gtk.TreeView(self._listModel)
+ self._listView.set_rules_hint(True)
+ self._scrolledList.add(self._listView)
+ self._addListColumns()
+ self.show_all()
+
+ def _addListColumns(self) :
+ for (idx, (name, _type, renderer)) in enumerate(self._listColumns) :
+ if not renderer :
+ continue
+
+ r = renderer()
+ r.set_property('background-set', True)
+ if (_type == bool) :
+ col = gtk.TreeViewColumn(name, r, active=idx, background=self._colorColIdx)
+ else :
+ col = gtk.TreeViewColumn(name, r, text=idx, background=self._colorColIdx)
+
+ col.set_sort_column_id(idx)
+ self._listView.append_column(col)
+
+ def _findRow(self, device) :
+ for idx in range(len(self._listModel)) :
+ if (self._listModel[idx][1] == device) :
+ return idx
+
+
+class tModel (object) :
+
+ def __init__(self, imageprefix) :
+ self.imageprefix = imageprefix
+
+
+class tApp (object) :
+
+ def __init__(self) :
+ self._model = tModel("test")
+ self._win = tMainWindow(self._model, PROGNAME)
+ self._win.setStatus("/dev/sda", "writing", "test-1gb.img", "FOOBAR STICK")
+ self._win.setStatus("/dev/sdb", "finished", "test-1gb.img", "SL STICK")
+ self._win.connect('destroy', lambda *w: self._close())
+
+ def run(self) :
+ gtk.main()
+
+ def _close(self) :
+ gtk.main_quit()
+
+
+def printSyntax(myName) :
+ print "Syntax: %s" % (myName,)
+ return 100
+
+def main(myName, args) :
+ if args :
+ return printSyntax(myName)
+
+ tApp().run()
+
+
+sys.exit(main(sys.argv[0], sys.argv[1:]))