diff options
| author | Jiri Moskovcak <jmoskovc@redhat.com> | 2009-02-25 10:22:46 +0100 |
|---|---|---|
| committer | Jiri Moskovcak <jmoskovc@redhat.com> | 2009-02-25 10:22:46 +0100 |
| commit | 5349e3c06eb12af91e89ec19d62c24712f0e8317 (patch) | |
| tree | 8cfeac5691cc2fed5f573f7ae4f22dacc8edcd6f /src/Gui/CCMainWindow.py | |
| parent | 69c4a16ed61a147bedfa7de9459d4a6b9333c161 (diff) | |
More autotools magic for gui
Diffstat (limited to 'src/Gui/CCMainWindow.py')
| -rwxr-xr-x | src/Gui/CCMainWindow.py | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/src/Gui/CCMainWindow.py b/src/Gui/CCMainWindow.py new file mode 100755 index 0000000..7f2cb7c --- /dev/null +++ b/src/Gui/CCMainWindow.py @@ -0,0 +1,139 @@ +#!/usr/bin/env python + +import sys +import pygtk +pygtk.require("2.0") +import gtk +import gtk.glade +import CCDBusBackend +import sys +from CC_gui_functions import * +from CCDumpList import getDumpList, DumpList +from CCReporterDialog import ReporterDialog + +def cb(self, *args): + pass + +class MainWindow(): + def __init__(self): + try: + self.ccdaemon = CCDBusBackend.DBusManager() + except Exception, e: + # show error message if connection fails + # FIXME add an option to start the daemon + gui_error_message(e.message) + sys.exit() + #Set the Glade file + self.gladefile = "ccgui.glade" + self.wTree = gtk.glade.XML(self.gladefile) + + #Get the Main Window, and connect the "destroy" event + self.window = self.wTree.get_widget("main_window") + # self.window.set_default_size(640, 480) + if (self.window): + self.window.connect("destroy", gtk.main_quit) + + self.appBar = self.wTree.get_widget("appBar") + + #init the dumps treeview + self.dlist = self.wTree.get_widget("tvDumps") + columns = [None]*2 + columns[0] = gtk.TreeViewColumn('Date') + columns[1] = gtk.TreeViewColumn('Package') + # create list + self.dumpsListStore = gtk.ListStore(str, str, object) + # set filter + self.modelfilter = self.dumpsListStore.filter_new() + self.modelfilter.set_visible_func(self.filter_dumps, None) + self.dlist.set_model(self.modelfilter) + for column in columns: + n = self.dlist.append_column(column) + column.cell = gtk.CellRendererText() + column.pack_start(column.cell, False) + column.set_attributes(column.cell, text=(n-1)) + column.set_resizable(True) + + #connect signals + self.dlist.connect("cursor-changed", self.on_tvDumps_cursor_changed) + self.wTree.get_widget("bDelete").connect("clicked", self.on_bDelete_clicked) + self.wTree.get_widget("bNext").connect("clicked", self.on_bNext_clicked) + self.wTree.get_widget("bQuit").connect("clicked", self.on_bQuit_clicked) + self.ccdaemon.connect("crash", self.on_data_changed_cb, None) + + # load data + self.load() + + def load(self): + self.appBar.push(0,"Loading dumps...") + self.loadDumpList() + self.appBar.pop(0) + + def loadDumpList(self): + #dumplist = getDumpList(dbmanager=self.ccdaemon) + pass + + def on_data_changed_cb(self, *args): + ret = gui_info_dialog("Another crash detected, do you want to refresh the data?",self.window) + if ret == gtk.RESPONSE_YES: + self.hydrate() + else: + pass + #print "got another crash, refresh gui?" + + + def filter_dumps(self, model, miter, data): + # this could be use for filtering the dumps + return True + + def show(self): + self.window.show() + + def hydrate(self): + self.dumpsListStore.clear() + dumplist = getDumpList(self.ccdaemon, refresh=True) + #self.rows = self.ccdaemon.getDumps() + #row_c = 0 + for entry in dumplist: + self.dumpsListStore.append([entry.getTime("%Y:%m:%d"),entry.getPackage(),entry]) + #row_c += 1 + + def on_tvDumps_cursor_changed(self,treeview): + dumpsListStore, path = self.dlist.get_selection().get_selected_rows() + if not path: + return + + # this should work until we keep the row object in the last position + dump = dumpsListStore.get_value(dumpsListStore.get_iter(path[0]), len(self.dlist.get_columns())) + + lDate = self.wTree.get_widget("lDate") + #move this to Dump class + lDate.set_label(dump.getTime("%Y.%m.%d %H:%M:%S")) + lPackage = self.wTree.get_widget("lPackage") + lPackage.set_label(dump.getPackage()) + self.wTree.get_widget("lExecutable").set_label(dump.getExecutable()) + self.wTree.get_widget("lCRate").set_label(dump.getCount()) + #print self.rows[row] + + def on_bDelete_clicked(self, button): + print "Delete" + + def on_bNext_clicked(self, button): + # FIXME don't duplicate the code, move to function + dumpsListStore, path = self.dlist.get_selection().get_selected_rows() + if not path: + return + dump = dumpsListStore.get_value(dumpsListStore.get_iter(path[0]), len(self.dlist.get_columns())) + # show the report window with selected dump + report_dialog = ReporterDialog(dump) + report_dialog.run() + + def on_bQuit_clicked(self, button): + gtk.main_quit() + + +if __name__ == "__main__": + cc = MainWindow() + cc.hydrate() + cc.show() + gtk.main() + |
