diff --git a/src/virtManager/createnet.py b/src/virtManager/createnet.py index 01056bd0f..997ee3aa3 100644 --- a/src/virtManager/createnet.py +++ b/src/virtManager/createnet.py @@ -302,6 +302,7 @@ class vmmCreateNetwork(gobject.GObject): except Exception, e: self.err.show_err(_("Error creating virtual network: %s" % str(e)), "".join(traceback.format_exc())) + return self.close() def validate(self, page_num): diff --git a/src/virtManager/error.py b/src/virtManager/error.py index 4d9c6e971..38b22b9ab 100644 --- a/src/virtManager/error.py +++ b/src/virtManager/error.py @@ -29,12 +29,17 @@ class vmmErrorDialog (gtk.MessageDialog): gtk.MessageDialog.__init__ (self, parent, flags, typ, buttons, message_format) + + self.val_err_box = None + self.message_format = message_format self.message_details = message_details self.buffer = None self.default_title = default_title self.set_title(self.default_title) self.set_property("text", self.message_format) + self.connect("response", self.response_cb) + self.connect("delete-event", self.hide_on_delete) if not message_details is None: # Expander section with details. @@ -57,29 +62,42 @@ class vmmErrorDialog (gtk.MessageDialog): self.vbox.pack_start (expander) expander.show () + def response_cb(self, src, ignore): + src.hide() + def show_err(self, summary, details, title=None): + self.hide() + if title is None: title = self.default_title self.set_title(title) self.set_property("text", summary) self.buffer.set_text(details) logging.debug("Uncaught Error: %s : %s" % (summary, details)) - self.run() - self.hide() + + self.show() def val_err(self, text1, text2=None, title=None): - message_box = gtk.MessageDialog(self.parent, \ - gtk.DIALOG_DESTROY_WITH_PARENT, \ - gtk.MESSAGE_ERROR,\ - gtk.BUTTONS_OK, text1) + def response_destroy(src, ignore): + src.destroy() + + if self.val_err_box: + self.val_err_box.destroy() + + self.val_err_box = gtk.MessageDialog(self.parent, + gtk.DIALOG_DESTROY_WITH_PARENT, + gtk.MESSAGE_ERROR, + gtk.BUTTONS_OK, text1) + if title is None: title = _("Input Error") logging.debug("Validation Error: %s" % text1) - message_box.set_title(title) + self.val_err_box.set_title(title) if text2 is not None: - message_box.format_secondary_text(text2) - message_box.run() - message_box.destroy() + self.val_err_box.format_secondary_text(text2) + + self.val_err_box.show() + self.val_err_box.connect("response", response_destroy) return False def yes_no(self, text1, text2=None): diff --git a/src/virtManager/manager.py b/src/virtManager/manager.py index a4418a32b..cb7f8abe6 100644 --- a/src/virtManager/manager.py +++ b/src/virtManager/manager.py @@ -828,6 +828,7 @@ class vmmManager(gobject.GObject): except Exception, e: self.err.show_err(_("Error deleting domain: %s" % str(e)),\ "".join(traceback.format_exc())) + return conn.tick(noStatsUpdate=True) def show_about(self, src):