summaryrefslogtreecommitdiffstats
path: root/frontend/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/main.py')
-rw-r--r--frontend/main.py86
1 files changed, 84 insertions, 2 deletions
diff --git a/frontend/main.py b/frontend/main.py
index d200a58..0287fac 100644
--- a/frontend/main.py
+++ b/frontend/main.py
@@ -42,10 +42,11 @@ class CallbacksMainWindow(object):
if not self._running_lock.acquire(0):
return
- def _o(pages):
+ def _o(pages, stopbutton):
"""Always return False -> remove from the idle queue after first execution"""
for i in range(pages.get_n_pages()):
pages.get_nth_page(i).set_sensitive(True)
+ stopbutton.set_sensitive(False)
return False
def worker(*args):
@@ -58,7 +59,11 @@ class CallbacksMainWindow(object):
self._data.pages.set_current_page(-1)
for i in range(self._data.pages.get_n_pages())[:-1]:
self._data.pages.get_nth_page(i).set_sensitive(False)
- thread.start_new_thread(worker, (self._data.pages,))
+ self.on_b_ResetResults_activate(None)
+
+ stopbutton = self._glade.get_widget("b_StopResults")
+ stopbutton.set_sensitive(True)
+ thread.start_new_thread(worker, (self._data.pages, stopbutton))
#menu callbacks
def on_mainmenu_open_activate(self, widget, *args):
@@ -98,6 +103,7 @@ class CallbacksMainWindow(object):
self._tasker.end()
del self._tasker
del self._cfg
+ del self._data.result_list_iter
gtk.main_quit()
def on_mainmenu_about_activate(self, widget, *args):
@@ -246,10 +252,14 @@ class CallbacksMainWindow(object):
#results callbacks
def on_b_ResetResults_activate(self, widget, *args):
print "on_b_ResetResults_activate"
+ self._data.result_list_store.clear()
+ del self._data.result_list_iter
+ self._data.result_list_iter = dict()
return True
def on_b_StopResults_activate(self, widget, *args):
print "on_b_StopResults_activate"
+ self._tasker.interrupt()
return True
class CallbacksFlagList(object):
@@ -358,6 +368,7 @@ class MainWindow(object):
self.plugin_iter = {}
self.flow_list_data = set()
+ #flow combobox
for plname in pluginsystem.list():
p = pluginsystem.getplugin(plname)
piter = self.plugin_list_store.append(None, [False, "%s (%s)" % (p.name, p.version), p.description, ""])
@@ -379,12 +390,75 @@ class MainWindow(object):
self.flow_list.add_attribute(self.flow_list_rend_text, 'text', 0)
self.flow_list.set_active(self.flow_list_store_diagnose)
+ # results
+ self.result_list_store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_INT)
+ self.result_list = self._glade.get_widget("tree_Results")
+ self.result_list.set_model(self.result_list_store)
+ self.result_list_iter = {}
+
+ def result_rend_text_func(column, cell_renderer, tree_model, iter, user_data):
+ colors = [
+ gtk.gdk.Color(red=50000, green=50000, blue=50000),
+ gtk.gdk.Color(red=10000, green=50000, blue=10000),
+ gtk.gdk.Color(red=50000, green=10000, blue=10000),
+ gtk.gdk.Color(red=10000, green=10000, blue=50000)
+ ]
+ state = tree_model.get_value(iter, 3)
+
+ cell_renderer.set_property("cell-background-set", True)
+ cell_renderer.set_property("cell-background-gdk", colors[state])
+
+ if user_data==2 and state!=2:
+ cell_renderer.set_property("foreground-set", True)
+ cell_renderer.set_property("foreground-gdk", gtk.gdk.Color(red=40000, green=40000, blue=40000))
+ else:
+ cell_renderer.set_property("foreground-set", False)
+
+ cell_renderer.set_property("text", tree_model.get_value(iter, user_data))
+ return
+
+ self.result_rend_text = gtk.CellRendererText()
+
+ self.result_list_col_0 = gtk.TreeViewColumn('Name')
+ self.result_list_col_0.pack_start(self.result_rend_text, True)
+ self.result_list_col_0.set_cell_data_func(self.result_rend_text, result_rend_text_func, 0)
+
+ self.result_list_col_1 = gtk.TreeViewColumn('Status')
+ self.result_list_col_1.pack_start(self.result_rend_text, True)
+ self.result_list_col_1.set_cell_data_func(self.result_rend_text, result_rend_text_func, 1)
+
+ self.result_list_col_2 = gtk.TreeViewColumn('Description')
+ self.result_list_col_2.pack_start(self.result_rend_text, True)
+ self.result_list_col_2.set_cell_data_func(self.result_rend_text, result_rend_text_func, 2)
+
+ self.result_list_col_3 = gtk.TreeViewColumn('Status ID')
+ self.result_list_col_3.pack_start(self.result_rend_text, True)
+ self.result_list_col_3.add_attribute(self.result_rend_text, 'text', 3)
+ self.result_list_col_3.set_property("visible", False)
+
+ self.result_list.append_column(self.result_list_col_0)
+ self.result_list.append_column(self.result_list_col_1)
+ self.result_list.append_column(self.result_list_col_2)
+ self.result_list.append_column(self.result_list_col_3)
+ self.result_list.set_search_column(0)
+
def update(self, message):
def _o(func, *args, **kwargs):
"""Always return False -> remove from the idle queue after first execution"""
func(*args, **kwargs)
return False
+ def issue_state(self):
+ if self._fixed:
+ return ("Fixed", 3)
+ elif self._happened and self._detected:
+ return ("Detected", 2)
+ elif self._detected:
+ return ("No problem", 1)
+ else:
+ return ("Waiting for check", 0)
+
+
if self._cfg.operation.verbose == "True":
self._importance = logging.DEBUG
else:
@@ -430,6 +504,14 @@ class MainWindow(object):
if self._importance<=message["importance"]:
print "TREE %s FROM %s" % (message["title"], message["origin"].name,)
pprint.pprint(message["message"])
+ elif message["action"]==reporting.ISSUE:
+ i = message["message"]
+ t,ids = issue_state(i)
+ if not self.result_list_iter.has_key(i):
+ self.result_list_iter[i] = self.result_list_store.append([i.name, t, i.description, ids])
+ else:
+ for idx,val in enumerate([i.name, t, i.description, ids]):
+ gobject.idle_add(_o, self.result_list_store.set, self.result_list_iter[i], idx, val)
else:
print "FIXME: Unknown message action %d!!" % (message["action"],)
print message