summaryrefslogtreecommitdiffstats
path: root/src/Gui
diff options
context:
space:
mode:
authorJiri Moskovcak <jmoskovc@redhat.com>2009-03-04 17:37:26 +0100
committerJiri Moskovcak <jmoskovc@redhat.com>2009-03-04 17:37:26 +0100
commitfb618b39a7de74b9cc58db322599603fc880ac36 (patch)
treeb47fa1098f9d70ae5cf708c37efd5f431e631736 /src/Gui
parent7d0b86ce4ce9401b7177c91874cac9e1e0ee42c7 (diff)
downloadabrt-fb618b39a7de74b9cc58db322599603fc880ac36.tar.gz
abrt-fb618b39a7de74b9cc58db322599603fc880ac36.tar.xz
abrt-fb618b39a7de74b9cc58db322599603fc880ac36.zip
Added a progress bar, new Comment entry for user comments..
Diffstat (limited to 'src/Gui')
-rw-r--r--src/Gui/CCDBusBackend.py1
-rw-r--r--src/Gui/CCMainWindow.py27
-rw-r--r--src/Gui/CCReporterDialog.py44
-rw-r--r--src/Gui/ccgui.glade41
-rw-r--r--src/Gui/report.glade45
5 files changed, 124 insertions, 34 deletions
diff --git a/src/Gui/CCDBusBackend.py b/src/Gui/CCDBusBackend.py
index 0cc26d59..c5fc498b 100644
--- a/src/Gui/CCDBusBackend.py
+++ b/src/Gui/CCDBusBackend.py
@@ -50,7 +50,6 @@ class DBusManager(gobject.GObject):
#for arg in args:
# print "Analyze complete for: %s" % arg
# emit signal to let clients know that analyze has been completed
- # maybe rewrite this with async method call?
self.emit("analyze-complete", dump)
def connect_to_daemon(self):
diff --git a/src/Gui/CCMainWindow.py b/src/Gui/CCMainWindow.py
index ea79b8eb..35e9b1a3 100644
--- a/src/Gui/CCMainWindow.py
+++ b/src/Gui/CCMainWindow.py
@@ -32,7 +32,7 @@ class MainWindow():
# FIXME add to PATH
# FIXME remove!
- self.gladefile = "%s/ccgui.glade" % sys.path[0]
+ self.gladefile = "%s%sccgui.glade" % (sys.path[0],"/")
self.wTree = gtk.glade.XML(self.gladefile)
#Get the Main Window, and connect the "destroy" event
@@ -45,7 +45,7 @@ class MainWindow():
self.appBar = self.wTree.get_widget("appBar")
# pregress bar window to show while bt is being extracted
self.pBarWindow = self.wTree.get_widget("pBarWindow")
- print self.pBarWindow
+ self.pBarWindow.set_transient_for(self.window)
self.pBar = self.wTree.get_widget("pBar")
# set colours for descritpion heading
@@ -87,6 +87,8 @@ class MainWindow():
# load data
#self.load()
+
+ # call to update the progressbar
def progress_update_cb(self, *args):
self.pBar.pulse()
return True
@@ -149,18 +151,14 @@ class MainWindow():
#print "got another crash, refresh gui?"
def on_analyze_complete_cb(self, daemon, report, pBarWindow):
+ gobject.source_remove(self.timer)
+ self.pBarWindow.hide()
try:
dumplist = getDumpList(self.ccdaemon)
except Exception, e:
print e
- #pBarWindow.destroy()
- #entry = dumplist.ddict[UUID]
- # tady asi nedostanem UUID, ale vysledek nasi volane metody
- #print report
- #print "GUI: Analyze for package %s crash with UUID %s is complete" % (entry.Package, UUID)
- #print "We should refresh the UI ..."
if not report:
- gui_error_message("Unable to get report! Debuginfo missing?")
+ gui_error_message("Unable to get report!\nDebuginfo is missing?")
return
report_dialog = ReporterDialog(report)
result = report_dialog.run()
@@ -179,6 +177,8 @@ class MainWindow():
dumpsListStore, path = self.dlist.get_selection().get_selected_rows()
if not path:
return
+ self.update_pBar = False
+ self.pBar.show()
self.pBarWindow.show()
self.timer = gobject.timeout_add (100,self.progress_update_cb)
@@ -190,16 +190,7 @@ class MainWindow():
# FIXME #3 dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoReply: Did not receive a reply
# do this async and wait for yum to end with debuginfoinstal
gui_error_message("Error getting the report: %s" % e.message)
- return
return
- if not report:
- gui_error_message("Unable to get report! Debuginfo missing?")
- return
- report_dialog = ReporterDialog(report)
- result = report_dialog.run()
- if result:
- self.ccdaemon.Report(result)
-
def delete_event_cb(self, widget, event, data=None):
# Change FALSE to TRUE and the main window will not be destroyed
diff --git a/src/Gui/CCReporterDialog.py b/src/Gui/CCReporterDialog.py
index cfe11c1f..2dc35783 100644
--- a/src/Gui/CCReporterDialog.py
+++ b/src/Gui/CCReporterDialog.py
@@ -13,12 +13,19 @@ class ReporterDialog():
self.report = report
#Set the Glade file
# FIXME add to path
- self.gladefile = "/usr/share/abrt/report.glade"
+ self.gladefile = "%s%sreport.glade" % (sys.path[0],"/")
self.wTree = gtk.glade.XML(self.gladefile)
#Get the Main Window, and connect the "destroy" event
self.window = self.wTree.get_widget("reporter_dialog")
self.window.set_default_size(640, 480)
+ # comment textview
+ self.tvComment = self.wTree.get_widget("tvComment")
+ self.tvComment.connect("focus-in-event", self.on_comment_focus_cb)
+ self.comment_changed = False
+
+ #user editable info in report
+ self.editable = ["Comment", "TextData1", "TextData2"]
#init the reports treeview
self.tvReport = self.wTree.get_widget("tvReport")
columns = [None]*2
@@ -42,12 +49,17 @@ class ReporterDialog():
renderer.connect('edited',self.column_edited,self.reportListStore)
# connect the signals
- #self.wTree.get_widget("bApply").connect("clicked", self.on_apply_clicked, self.tvReport)
+ self.wTree.get_widget("bApply").connect("clicked", self.on_apply_clicked, self.tvReport)
#self.wTree.get_widget("bCancel").connect("clicked", self.on_cancel_clicked, self.tvReport)
self.tvReport.connect_after("size-allocate", self.on_window_resize)
self.hydrate()
+
+ def on_comment_focus_cb(self, widget, event):
+ if not self.comment_changed:
+ widget.set_buffer(None)
+ self.comment_changed = True
def on_window_resize(self, treeview, allocation):
# multine support
@@ -60,23 +72,29 @@ class ReporterDialog():
return
def on_apply_clicked(self, button, treeview):
- pass
+ #fill the report with user changed values and return it..
+ #user changed the comment, so we want to save it
+ for item in self.editable:
+ if item == "Comment" and self.comment_changed:
+ buff = self.tvComment.get_buffer()
+ self.report[item] = buff.get_text(buff.get_start_iter(),buff.get_end_iter())
def on_cancel_clicked(self, button, treeview):
pass
def hydrate(self):
- editable = ["Comment", "TextData1", "TextData2"]
for item in self.report:
- self.reportListStore.append([item, self.report[item], item in editable])
- #self.reportListStore.append(["Comment","", True])
+ if item == "Comment":
+ buff = gtk.TextBuffer()
+ buff.set_text("Brief description how to reproduce this or what you did...")
+ self.tvComment.set_buffer(buff)
+ continue
+ self.reportListStore.append([item, self.report[item], item in self.editable])
def run(self):
result = self.window.run()
- if result == gtk.RESPONSE_CANCEL:
- self.window.destroy()
- return None
- else:
- self.window.destroy()
- return self.report
-
+ if result != gtk.RESPONSE_APPLY:
+ self.report = None
+ self.window.destroy()
+ return self.report
+
diff --git a/src/Gui/ccgui.glade b/src/Gui/ccgui.glade
index dbac11da..ee579cb4 100644
--- a/src/Gui/ccgui.glade
+++ b/src/Gui/ccgui.glade
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.4.5 on Sat Feb 28 15:37:08 2009 -->
+<!--Generated with glade3 3.4.5 on Wed Mar 4 17:03:55 2009 -->
<glade-interface>
<widget class="GtkWindow" id="main_window2">
<property name="title" translatable="yes">Crash-catcher</property>
@@ -299,4 +299,43 @@
</widget>
</child>
</widget>
+ <widget class="GtkWindow" id="pBarWindow">
+ <property name="title" translatable="yes">Please wait..</property>
+ <property name="modal">True</property>
+ <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="default_width">270</property>
+ <child>
+ <widget class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="pbLabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Working...</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkProgressBar" id="pBar">
+ <property name="visible">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkStatusbar" id="statusbar2">
+ <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>
</glade-interface>
diff --git a/src/Gui/report.glade b/src/Gui/report.glade
index d8bc9bbb..2c68f74f 100644
--- a/src/Gui/report.glade
+++ b/src/Gui/report.glade
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.4.5 on Sat Feb 28 15:50:38 2009 -->
+<!--Generated with glade3 3.4.5 on Wed Mar 4 17:15:47 2009 -->
<glade-interface>
<widget class="GtkDialog" id="reporter_dialog">
<property name="border_width">5</property>
@@ -47,6 +47,49 @@
<property name="position">1</property>
</packing>
</child>
+ <child>
+ <widget class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkEventBox" id="eventbox1">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="lComment">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="ypad">2</property>
+ <property name="label" translatable="yes">Comment</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ </packing>
+ </child>
+ <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="GtkTextView" id="tvComment">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
<child internal-child="action_area">
<widget class="GtkHButtonBox" id="dialog-action_area4">
<property name="visible">True</property>