diff options
author | Jiri Moskovcak <jmoskovc@redhat.com> | 2009-02-20 18:33:39 +0100 |
---|---|---|
committer | Jiri Moskovcak <jmoskovc@redhat.com> | 2009-02-20 18:33:39 +0100 |
commit | acf88612353801c587a3e10fa7ad9298ef583387 (patch) | |
tree | 192978323fd81d4cd48d5c99da5a5ea01f2415de /src | |
parent | 344018eb919c48c333bdf6aa1479b82c9a457a5c (diff) | |
download | abrt-acf88612353801c587a3e10fa7ad9298ef583387.tar.gz abrt-acf88612353801c587a3e10fa7ad9298ef583387.tar.xz abrt-acf88612353801c587a3e10fa7ad9298ef583387.zip |
Added simple gtk gui
Diffstat (limited to 'src')
-rw-r--r-- | src/Gui/CCGuiDbusBackend.py | 58 | ||||
-rw-r--r-- | src/Gui/ccgui.glade | 703 | ||||
-rwxr-xr-x | src/Gui/mainwindow.py | 103 |
3 files changed, 864 insertions, 0 deletions
diff --git a/src/Gui/CCGuiDbusBackend.py b/src/Gui/CCGuiDbusBackend.py new file mode 100644 index 00000000..406c1bf2 --- /dev/null +++ b/src/Gui/CCGuiDbusBackend.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python + +import dbus +import gobject +from dbus.mainloop.glib import DBusGMainLoop +import gtk + +CC_IFACE = 'com.redhat.crash_catcher' +CC_PATH = '/com/redhat/crash_catcher' + + +class DBusManager(gobject.GObject): + """ Class to provide communication with daemon over dbus """ + # and later with policyKit + def __init__(self): + gobject.GObject.__init__(self) + # binds the dbus to glib mainloop + DBusGMainLoop(set_as_default=True) + self.proxy = None + self.connect() + if self.proxy: + self.cc = dbus.Interface(self.proxy, dbus_interface=CC_IFACE) + #intr = dbus.Interface(proxy, dbus_interface='org.freedesktop.DBus.Introspectable') + self.proxy.connect_to_signal("Crash",self.crash_cb,dbus_interface=CC_IFACE) + else: + raise Exception("Proxy object doesn't exist!") + + # disconnect callback + def disconnected(*args): + print "disconnect" + + def crash_cb(self,*args): + print "got another crash while in gui!" + for arg in args: + print arg + #emit a signal + + def connect(self): + bus = dbus.SystemBus() + if not bus: + raise Exception("Can't connect to dbus") + try: + self.proxy = bus.get_object(CC_IFACE, CC_PATH) + except Exception, e: + print "Error while creating the proxy" + print e + + def getDumps(self): + row_dict = None + rows = [] + for row in self.cc.GetCrashInfosMap(""): +# print row + row_dict = {} + for column in row: + row_dict[column] = row[column] + # print "%s:%s" % (column, row[column]) + rows.append(row_dict); + return rows diff --git a/src/Gui/ccgui.glade b/src/Gui/ccgui.glade new file mode 100644 index 00000000..3623c153 --- /dev/null +++ b/src/Gui/ccgui.glade @@ -0,0 +1,703 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> +<!--Generated with glade3 3.4.5 on Fri Feb 20 16:42:05 2009 --> +<glade-interface> + <widget class="GtkWindow" id="main_window"> + <property name="default_width">640</property> + <property name="default_height">480</property> + <child> + <widget class="GtkVBox" id="vbox1"> + <property name="visible">True</property> + <child> + <widget class="GtkMenuBar" id="menubar1"> + <property name="visible">True</property> + <child> + <widget class="GtkMenuItem" id="menuitem1"> + <property name="visible">True</property> + <property name="label" translatable="yes">_File</property> + <property name="use_underline">True</property> + <child> + <widget class="GtkMenu" id="menu1"> + <property name="visible">True</property> + <child> + <widget class="GtkImageMenuItem" id="imagemenuitem1"> + <property name="visible">True</property> + <property name="label" translatable="yes">gtk-new</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + </widget> + </child> + <child> + <widget class="GtkImageMenuItem" id="imagemenuitem2"> + <property name="visible">True</property> + <property name="label" translatable="yes">gtk-open</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + </widget> + </child> + <child> + <widget class="GtkImageMenuItem" id="imagemenuitem3"> + <property name="visible">True</property> + <property name="label" translatable="yes">gtk-save</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + </widget> + </child> + <child> + <widget class="GtkImageMenuItem" id="imagemenuitem4"> + <property name="visible">True</property> + <property name="label" translatable="yes">gtk-save-as</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + </widget> + </child> + <child> + <widget class="GtkSeparatorMenuItem" id="separatormenuitem1"> + <property name="visible">True</property> + </widget> + </child> + <child> + <widget class="GtkImageMenuItem" id="imagemenuitem5"> + <property name="visible">True</property> + <property name="label" translatable="yes">gtk-quit</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + </widget> + </child> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkMenuItem" id="menuitem2"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Edit</property> + <property name="use_underline">True</property> + <child> + <widget class="GtkMenu" id="menu2"> + <property name="visible">True</property> + <child> + <widget class="GtkImageMenuItem" id="imagemenuitem6"> + <property name="visible">True</property> + <property name="label" translatable="yes">gtk-cut</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + </widget> + </child> + <child> + <widget class="GtkImageMenuItem" id="imagemenuitem7"> + <property name="visible">True</property> + <property name="label" translatable="yes">gtk-copy</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + </widget> + </child> + <child> + <widget class="GtkImageMenuItem" id="imagemenuitem8"> + <property name="visible">True</property> + <property name="label" translatable="yes">gtk-paste</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + </widget> + </child> + <child> + <widget class="GtkImageMenuItem" id="imagemenuitem9"> + <property name="visible">True</property> + <property name="label" translatable="yes">gtk-delete</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + </widget> + </child> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkMenuItem" id="menuitem3"> + <property name="visible">True</property> + <property name="label" translatable="yes">_View</property> + <property name="use_underline">True</property> + </widget> + </child> + <child> + <widget class="GtkMenuItem" id="menuitem4"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Help</property> + <property name="use_underline">True</property> + <child> + <widget class="GtkMenu" id="menu3"> + <property name="visible">True</property> + <child> + <widget class="GtkImageMenuItem" id="imagemenuitem10"> + <property name="visible">True</property> + <property name="label" translatable="yes">gtk-about</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + </widget> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkHBox" id="hbox1"> + <property name="visible">True</property> + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow1"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <child> + <widget class="GtkTreeView" id="tvDumps"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <signal name="cursor_changed" handler="on_tvDumps_cursor_changed"/> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow2"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <child> + <widget class="GtkVBox" id="vbox2"> + <property name="visible">True</property> + <child> + <widget class="GtkVBox" id="vbox3"> + <property name="visible">True</property> + <child> + <widget class="GtkHBox" id="hbox2"> + <property name="visible">True</property> + <property name="homogeneous">True</property> + <child> + <widget class="GtkLabel" id="Date"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Date:</b></property> + <property name="use_markup">True</property> + </widget> + </child> + <child> + <widget class="GtkLabel" id="lDate"> + <property name="visible">True</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + <child> + <widget class="GtkHBox" id="hbox3"> + <property name="visible">True</property> + <property name="homogeneous">True</property> + <child> + <widget class="GtkLabel" id="Package"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Package</b></property> + <property name="use_markup">True</property> + </widget> + </child> + <child> + <widget class="GtkLabel" id="lPackage"> + <property name="visible">True</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="lPackageInfo"> + <property name="visible">True</property> + <property name="label" translatable="yes">Package-info-placeholder</property> + </widget> + <packing> + <property name="position">2</property> + </packing> + </child> + <child> + <widget class="GtkHBox" id="hbox4"> + <property name="visible">True</property> + <property name="homogeneous">True</property> + <child> + <widget class="GtkLabel" id="Executable"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Executable</b></property> + <property name="use_markup">True</property> + </widget> + </child> + <child> + <widget class="GtkLabel" id="lExecutable"> + <property name="visible">True</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="position">3</property> + </packing> + </child> + <child> + <widget class="GtkHBox" id="hbox5"> + <property name="visible">True</property> + <property name="homogeneous">True</property> + <child> + <widget class="GtkLabel" id="CRate"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Crash rate</b></property> + <property name="use_markup">True</property> + </widget> + </child> + <child> + <widget class="GtkLabel" id="lCRate"> + <property name="visible">True</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="position">4</property> + </packing> + </child> + </widget> + </child> + <child> + <widget class="GtkHButtonBox" id="hbuttonbox1"> + <property name="visible">True</property> + <child> + <widget class="GtkButton" id="bDelete"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label" translatable="yes">gtk-delete</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + </widget> + </child> + <child> + <widget class="GtkButton" id="bNext"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label" translatable="yes">gtk-go-forward</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="bQuit"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label" translatable="yes">gtk-quit</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + </widget> + <packing> + <property name="position">2</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkStatusbar" id="statusbar1"> + <property name="visible">True</property> + <property name="spacing">2</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">2</property> + </packing> + </child> + </widget> + </child> + </widget> + <widget class="GtkDialog" id="dialog1"> + <property name="border_width">5</property> + <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> + <property name="default_width">400</property> + <property name="default_height">400</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="has_separator">False</property> + <child internal-child="vbox"> + <widget class="GtkVBox" id="dialog-vbox1"> + <property name="visible">True</property> + <property name="spacing">2</property> + <child> + <widget class="GtkVBox" id="vbox5"> + <property name="visible">True</property> + <child> + <widget class="GtkLabel" id="label10"> + <property name="visible">True</property> + <property name="label" translatable="yes">label</property> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkTreeView" id="treeview1"> + <property name="visible">True</property> + <property name="can_focus">True</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="dialog-action_area1"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + <child> + <widget class="GtkButton" id="button4"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label" translatable="yes">gtk-apply</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + </widget> + </child> + <child> + <widget class="GtkButton" id="button5"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label" translatable="yes">gtk-cancel</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + </widget> + </child> + </widget> + <widget class="GtkDialog" id="dialog2"> + <property name="border_width">5</property> + <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> + <property name="default_width">400</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="has_separator">False</property> + <child internal-child="vbox"> + <widget class="GtkVBox" id="dialog-vbox2"> + <property name="visible">True</property> + <property name="spacing">2</property> + <child> + <widget class="GtkNotebook" id="notebook1"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <child> + <widget class="GtkTable" id="table1"> + <property name="visible">True</property> + <property name="n_rows">6</property> + <property name="n_columns">2</property> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <widget class="GtkLabel" id="label14"> + <property name="visible">True</property> + <property name="label" translatable="yes">BlackList</property> + </widget> + </child> + <child> + <widget class="GtkEntry" id="entry1"> + <property name="visible">True</property> + <property name="can_focus">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label15"> + <property name="visible">True</property> + <property name="label" translatable="yes">Database Plugin</property> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + </packing> + </child> + <child> + <widget class="GtkComboBox" id="combobox1"> + <property name="visible">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label16"> + <property name="visible">True</property> + <property name="label" translatable="yes">OpenPGP Public Keys</property> + </widget> + <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <widget class="GtkHBox" id="hbox7"> + <property name="visible">True</property> + <child> + <widget class="GtkTreeView" id="treeview4"> + <property name="visible">True</property> + <property name="can_focus">True</property> + </widget> + </child> + <child> + <widget class="GtkVBox" id="vbox9"> + <property name="visible">True</property> + <child> + <widget class="GtkButton" id="button6"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label" translatable="yes">gtk-add</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + </widget> + </child> + <child> + <widget class="GtkButton" id="button7"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label" translatable="yes">gtk-remove</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label11"> + <property name="visible">True</property> + <property name="label" translatable="yes">Settings</property> + </widget> + <packing> + <property name="type">tab</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <widget class="GtkVBox" id="vbox6"> + <property name="visible">True</property> + <child> + <widget class="GtkHBox" id="hbox6"> + <property name="visible">True</property> + <property name="spacing">10</property> + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow3"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <child> + <widget class="GtkTreeView" id="treeview2"> + <property name="visible">True</property> + <property name="can_focus">True</property> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow4"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <child> + <widget class="GtkVBox" id="vbox7"> + <property name="visible">True</property> + <child> + <widget class="GtkLabel" id="label17"> + <property name="visible">True</property> + <property name="label" translatable="yes">reporter association</property> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkTreeView" id="treeview3"> + <property name="visible">True</property> + <property name="can_focus">True</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + <child> + <widget class="GtkExpander" id="expander1"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <child> + <placeholder/> + </child> + <child> + <widget class="GtkLabel" id="label13"> + <property name="visible">True</property> + <property name="label" translatable="yes">Plugin details</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label12"> + <property name="visible">True</property> + <property name="label" translatable="yes">Plugins</property> + </widget> + <packing> + <property name="type">tab</property> + <property name="position">1</property> + <property name="tab_fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="dialog-action_area2"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + <child> + <widget class="GtkButton" id="button8"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label" translatable="yes">gtk-apply</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + </widget> + </child> + <child> + <widget class="GtkButton" id="button9"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label" translatable="yes">gtk-cancel</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + </widget> + </child> + </widget> +</glade-interface> diff --git a/src/Gui/mainwindow.py b/src/Gui/mainwindow.py new file mode 100755 index 00000000..81d73850 --- /dev/null +++ b/src/Gui/mainwindow.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python + +import sys +import pygtk +pygtk.require("2.0") +import gtk +import gtk.glade +import CCGuiDbusBackend +from datetime import datetime + +def cb(self, *args): + pass + +class CCMainWindow(): + """This is an Hello World GTK application""" + + def __init__(self): + self.ccdaemon = CCGuiDbusBackend.DBusManager() + #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) + + #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, int) + # 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) + + 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.rows = self.ccdaemon.getDumps() + row_c = 0 + for row in self.rows: + self.dumpsListStore.append([row["Time"], row["Package"], row_c]) + row_c += 1 + + def on_tvDumps_cursor_changed(self,treeview): + dumpsListStore, path = self.dlist.get_selection().get_selected_rows() + if not path: + return + + # rewrite this OO + #DumpList class + row = self.rows[dumpsListStore.get_value(dumpsListStore.get_iter(path[0]), 2)] + + lDate = self.wTree.get_widget("lDate") + #move this to Dump class + t = datetime.fromtimestamp(int(row["Time"])) + date = t.strftime("%Y-%m-%d %H:%M:%S") + lDate.set_label(date) + lPackage = self.wTree.get_widget("lPackage") + lPackage.set_label(row["Package"]) + self.wTree.get_widget("lExecutable").set_label(row["Executable"]) + self.wTree.get_widget("lCRate").set_label(row["Count"]) + #print self.rows[row] + + def on_bDelete_clicked(self, button): + print "Delete" + + def on_bNext_clicked(self, button): + print "Next" + + def on_bQuit_clicked(self, button): + print "Quit" + gtk.main_quit() + + +if __name__ == "__main__": + cc = CCMainWindow() + cc.hydrate() + cc.show() + gtk.main() + |