diff options
| author | Jiri Moskovcak <jmoskovc@redhat.com> | 2010-03-08 17:32:04 +0100 |
|---|---|---|
| committer | Jiri Moskovcak <jmoskovc@redhat.com> | 2010-03-08 17:32:04 +0100 |
| commit | e74c5cb7835d2e6e3ddbeee69023995304d08264 (patch) | |
| tree | 919c788c3ec6000ecd4e383cdf213586f89407bf /src/Gui | |
| parent | a799b20e533e0b55b5b85d887ea3a7d13254c11d (diff) | |
| download | abrt-e74c5cb7835d2e6e3ddbeee69023995304d08264.tar.gz abrt-e74c5cb7835d2e6e3ddbeee69023995304d08264.tar.xz abrt-e74c5cb7835d2e6e3ddbeee69023995304d08264.zip | |
GUI: added option to run without main window v3
Diffstat (limited to 'src/Gui')
| -rw-r--r-- | src/Gui/CCDumpList.py | 5 | ||||
| -rw-r--r-- | src/Gui/CCMainWindow.py | 54 | ||||
| -rw-r--r-- | src/Gui/CCReporterDialog.py | 34 | ||||
| -rwxr-xr-x | src/Gui/abrt-gui | 2 |
4 files changed, 70 insertions, 25 deletions
diff --git a/src/Gui/CCDumpList.py b/src/Gui/CCDumpList.py index f3df21e..c962f21 100644 --- a/src/Gui/CCDumpList.py +++ b/src/Gui/CCDumpList.py @@ -28,6 +28,11 @@ class DumpList(list): else: print "db == None!" + def getDumpByCrashID(self, crashid): + for dump in self: + # crashid can be either hash or uid:hash + if crashid in (dump.getUUID(),dump.getUID()+":"+dump.getUUID()): + return dump __PFList = None __PFList_dbmanager = None diff --git a/src/Gui/CCMainWindow.py b/src/Gui/CCMainWindow.py index 4d7dff4..8129b8a 100644 --- a/src/Gui/CCMainWindow.py +++ b/src/Gui/CCMainWindow.py @@ -30,18 +30,10 @@ import ABRTExceptions class MainWindow(): ccdaemon = None - def __init__(self): + def __init__(self, daemon): self.theme = gtk.icon_theme_get_default() self.updates = "" - try: - self.ccdaemon = CCDBusBackend.DBusManager() - except ABRTExceptions.IsRunning: - # another instance is running, so exit quietly - sys.exit() - except Exception, ex: - # show error message if connection fails - gui_error_message("%s" % ex) - sys.exit() + self.ccdaemon = daemon #Set the Glade file self.gladefile = "%s/ccgui.glade" % sys.path[0] self.wTree = gtk.glade.XML(self.gladefile) @@ -295,19 +287,51 @@ class MainWindow(): self.window.present() if __name__ == "__main__": + verbose = 0 + crashid = None try: - opts, args = getopt.getopt(sys.argv[1:], "v") + opts, args = getopt.getopt(sys.argv[1:], "vh", ["help","report="]) except getopt.GetoptError, err: print str(err) # prints something like "option -a not recognized" sys.exit(2) - verbose = 0 + for opt, arg in opts: if opt == "-v": verbose += 1 + elif opt == "--report": + crashid=arg + elif opt in ("-h","--help"): + print _("Usage: abrt-gui [OPTIONS]" + "\n\t-h, --help \tthis help message" + "\n\t-v[vv] \tverbosity level" + "\n\t--report=<crashid>\tdirectly report crash with crashid=<crashid>" + ) + sys.exit() + init_logging("abrt-gui", verbose) log1("log level:%d", verbose) - cc = MainWindow() - cc.hydrate() - cc.show() + try: + daemon = CCDBusBackend.DBusManager() + except ABRTExceptions.IsRunning: + # another instance is running, so exit quietly + sys.exit() + except Exception, ex: + # show error message if connection fails + gui_error_message("%s" % ex) + sys.exit() + + if crashid: + dumplist = getDumpList(daemon) + crashdump = dumplist.getDumpByCrashID(crashid) + if not crashdump: + gui_error_message(_("No such crash in database, probably wrong crashid." + "\ncrashid=%s" % crashid)) + sys.exit() + rs = ReporterSelector(crashdump, daemon, parent=None) + rs.show() + else: + cc = MainWindow(daemon) + cc.hydrate() + cc.show() gtk.main() diff --git a/src/Gui/CCReporterDialog.py b/src/Gui/CCReporterDialog.py index a4c216d..3b3fdd8 100644 --- a/src/Gui/CCReporterDialog.py +++ b/src/Gui/CCReporterDialog.py @@ -42,6 +42,8 @@ class ReporterDialog(): self.window.set_position(gtk.WIN_POS_CENTER_ON_PARENT) self.window.set_transient_for(parent) self.window.set_modal(True) + else: + self.window.set_position(gtk.WIN_POS_CENTER) # comment textview self.tvComment = self.builder.get_object("tvComment") @@ -344,17 +346,26 @@ class ReporterSelector(): self.builder = gtk.Builder() self.builder.add_from_file(builderfile) self.window = self.builder.get_object("w_reporters") + b_cancel = self.builder.get_object("b_close") + if parent: self.window.set_position(gtk.WIN_POS_CENTER_ON_PARENT) self.window.set_transient_for(parent) self.window.set_modal(True) - self.connect_signal(self.window, "delete-event", self.on_window_delete) - self.connect_signal(self.window, "destroy-event", self.on_window_delete) + self.connect_signal(self.window, "delete-event", self.on_window_delete) + self.connect_signal(self.window, "destroy-event", self.on_window_delete) + self.connect_signal(b_cancel, "clicked", self.on_close_clicked) + else: + # if we don't have parent we want to quit the mainloop on close + self.window.set_position(gtk.WIN_POS_CENTER) + self.connect_signal(self.window, "delete-event", gtk.main_quit) + self.connect_signal(self.window, "destroy-event", gtk.main_quit) + self.connect_signal(b_cancel, "clicked", gtk.main_quit) + self.pBarWindow = self.builder.get_object("pBarWindow") - b_cancel = self.builder.get_object("b_close") - self.connect_signal(b_cancel, "clicked", self.on_close_clicked) + reporters_vbox = self.builder.get_object("vb_reporters") for reporter in self.reporters: button = gtk.Button(str(reporter)) @@ -396,6 +407,13 @@ class ReporterSelector(): for obj, signal_id in self.connected_signals: obj.disconnect(signal_id) + def cleanup_and_exit(self): + if not self.window.get_property("visible"): + self.disconnect_signals() + # if the reporter selector doesn't have a parent + if not self.window.get_transient_for(): + gtk.main_quit() + def update_cb(self, daemon, message): self.updates += message if self.updates[-1] != '\n': @@ -447,8 +465,7 @@ class ReporterSelector(): self.pBarWindow.hide() gui_report_dialog(result, self.window) - if not self.window.get_property("visible"): - self.disconnect_signals() + self.cleanup_and_exit() def on_analyze_complete_cb(self, daemon, report, pBarWindow): try: @@ -495,9 +512,8 @@ class ReporterSelector(): # -50 == REFRESH elif response == -50: self.refresh_report(report) - - elif not self.window.get_property("visible"): - self.disconnect_signals() + else: + self.cleanup_and_exit() # call to update the progressbar def progress_update_cb(self, *args): diff --git a/src/Gui/abrt-gui b/src/Gui/abrt-gui index 78379be..059d867 100755 --- a/src/Gui/abrt-gui +++ b/src/Gui/abrt-gui @@ -1,5 +1,5 @@ #!/bin/sh -if test x"$1" = x"--help" || test x"$1" = x"--version"; then +if test x"$1" = x"--version"; then echo "abrt-gui VERSION" exit 0 fi |
