summaryrefslogtreecommitdiffstats
path: root/src/Gui/CCMainWindow.py
diff options
context:
space:
mode:
authorJiri Moskovcak <jmoskovc@redhat.com>2009-02-25 10:22:46 +0100
committerJiri Moskovcak <jmoskovc@redhat.com>2009-02-25 10:22:46 +0100
commit5349e3c06eb12af91e89ec19d62c24712f0e8317 (patch)
tree8cfeac5691cc2fed5f573f7ae4f22dacc8edcd6f /src/Gui/CCMainWindow.py
parent69c4a16ed61a147bedfa7de9459d4a6b9333c161 (diff)
More autotools magic for gui
Diffstat (limited to 'src/Gui/CCMainWindow.py')
-rwxr-xr-xsrc/Gui/CCMainWindow.py139
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()
+