mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-02-25 18:55:27 -06:00
engine: Use callers error dialog when launching windows
This gives proper dialog placement.
This commit is contained in:
parent
8c05c33abc
commit
0c8a7e8beb
@ -275,7 +275,7 @@ class vmmEngine(gobject.GObject):
|
||||
self.systray.connect("action-destroy-domain", self._do_destroy_domain)
|
||||
self.systray.connect("action-show-console", self._do_show_console)
|
||||
self.systray.connect("action-show-details", self._do_show_details)
|
||||
self.systray.connect("action-exit-app", self._do_exit_app)
|
||||
self.systray.connect("action-exit-app", self.exit_app)
|
||||
|
||||
def system_tray_changed(self, *ignore):
|
||||
systray_enabled = self.config.get_view_system_tray()
|
||||
@ -378,6 +378,9 @@ class vmmEngine(gobject.GObject):
|
||||
logging.exception("Error connecting to %s" % uri)
|
||||
return None
|
||||
|
||||
def _do_connect(self, src, uri):
|
||||
return self.connect_to_uri(uri)
|
||||
|
||||
def _connect_cancelled(self, connect):
|
||||
self.windowConnect = None
|
||||
if len(self.connections.keys()) == 0:
|
||||
@ -457,54 +460,7 @@ class vmmEngine(gobject.GObject):
|
||||
gobject.source_remove(self.timer)
|
||||
self.schedule_timer()
|
||||
|
||||
def _do_show_about(self, src):
|
||||
self.show_about()
|
||||
def _do_show_preferences(self, src):
|
||||
self.show_preferences()
|
||||
def _do_show_host(self, src, uri):
|
||||
self.show_host(uri)
|
||||
def _do_show_connect(self, src):
|
||||
self.show_connect()
|
||||
def _do_connect(self, src, uri):
|
||||
self.connect_to_uri(uri)
|
||||
def _do_show_details(self, src, uri, uuid):
|
||||
self.show_details(uri, uuid)
|
||||
def _do_show_create(self, src, uri):
|
||||
self.show_create(uri)
|
||||
def _do_show_help(self, src, index):
|
||||
self.show_help(index)
|
||||
def _do_show_console(self, src, uri, uuid):
|
||||
self.show_console(uri, uuid)
|
||||
def _do_toggle_manager(self, src):
|
||||
self.toggle_manager()
|
||||
def _do_show_manager(self, src):
|
||||
self.show_manager()
|
||||
def _do_refresh_console(self, src, uri, uuid):
|
||||
self.refresh_console(uri, uuid)
|
||||
def _do_save_domain(self, src, uri, uuid):
|
||||
self.save_domain(src, uri, uuid)
|
||||
def _do_restore_domain(self, src, uri):
|
||||
self.restore_domain(src, uri)
|
||||
def _do_destroy_domain(self, src, uri, uuid):
|
||||
self.destroy_domain(src, uri, uuid)
|
||||
def _do_suspend_domain(self, src, uri, uuid):
|
||||
self.suspend_domain(src, uri, uuid)
|
||||
def _do_resume_domain(self, src, uri, uuid):
|
||||
self.resume_domain(src, uri, uuid)
|
||||
def _do_run_domain(self, src, uri, uuid):
|
||||
self.run_domain(src, uri, uuid)
|
||||
def _do_shutdown_domain(self, src, uri, uuid):
|
||||
self.shutdown_domain(src, uri, uuid)
|
||||
def _do_reboot_domain(self, src, uri, uuid):
|
||||
self.reboot_domain(src, uri, uuid)
|
||||
def _do_migrate_domain(self, src, uri, uuid):
|
||||
self.show_migrate(uri, uuid)
|
||||
def _do_clone_domain(self, src, uri, uuid):
|
||||
self.show_clone(uri, uuid)
|
||||
def _do_exit_app(self, src):
|
||||
self.exit_app()
|
||||
|
||||
def refresh_console(self, uri, uuid):
|
||||
def refresh_console(self, ignore, uri, uuid):
|
||||
"""
|
||||
Present VM console if recently started
|
||||
"""
|
||||
@ -528,7 +484,7 @@ class vmmEngine(gobject.GObject):
|
||||
if self.windows <= 0 and not self.systray.is_visible():
|
||||
self.exit_app()
|
||||
|
||||
def exit_app(self):
|
||||
def exit_app(self, ignore_src=None):
|
||||
conns = self.connections.values()
|
||||
for conn in conns:
|
||||
conn["connection"].close()
|
||||
@ -597,16 +553,16 @@ class vmmEngine(gobject.GObject):
|
||||
# Dialog launchers #
|
||||
####################
|
||||
|
||||
def show_about(self):
|
||||
def _do_show_about(self, src):
|
||||
try:
|
||||
if self.windowAbout == None:
|
||||
self.windowAbout = vmmAbout(self.get_config())
|
||||
self.windowAbout.show()
|
||||
except Exception, e:
|
||||
self.err.show_err(_("Error launching 'About' dialog: %s") % str(e),
|
||||
"".join(traceback.format_exc()))
|
||||
src.err.show_err(_("Error launching 'About' dialog: %s") % str(e),
|
||||
"".join(traceback.format_exc()))
|
||||
|
||||
def show_help(self, index):
|
||||
def _do_show_help(self, src, index):
|
||||
try:
|
||||
uri = "ghelp:%s" % self.config.get_appname()
|
||||
if index:
|
||||
@ -615,8 +571,8 @@ class vmmEngine(gobject.GObject):
|
||||
logging.debug("Showing help for %s" % uri)
|
||||
gtk.show_uri(None, uri, gtk.get_current_event_time())
|
||||
except Exception, e:
|
||||
self.err.show_err(_("Unable to display documentation: %s") % e,
|
||||
"".join(traceback.format_exc()))
|
||||
src.err.show_err(_("Unable to display documentation: %s") % e,
|
||||
"".join(traceback.format_exc()))
|
||||
|
||||
def _get_preferences(self):
|
||||
if self.windowPreferences:
|
||||
@ -627,12 +583,12 @@ class vmmEngine(gobject.GObject):
|
||||
self.windowPreferences = obj
|
||||
return self.windowPreferences
|
||||
|
||||
def show_preferences(self):
|
||||
def _do_show_preferences(self, src):
|
||||
try:
|
||||
self._get_preferences().show()
|
||||
except Exception, e:
|
||||
self.err.show_err(_("Error launching preferences: %s") % str(e),
|
||||
"".join(traceback.format_exc()))
|
||||
src.err.show_err(_("Error launching preferences: %s") % str(e),
|
||||
"".join(traceback.format_exc()))
|
||||
|
||||
def _get_host_dialog(self, uri):
|
||||
if self.connections[uri]["windowHost"]:
|
||||
@ -641,18 +597,18 @@ class vmmEngine(gobject.GObject):
|
||||
con = self._lookup_connection(uri)
|
||||
obj = vmmHost(self.get_config(), con, self)
|
||||
obj.connect("action-show-help", self._do_show_help)
|
||||
obj.connect("action-exit-app", self._do_exit_app)
|
||||
obj.connect("action-exit-app", self.exit_app)
|
||||
obj.connect("action-view-manager", self._do_show_manager)
|
||||
obj.connect("action-restore-domain", self._do_restore_domain)
|
||||
self.connections[uri]["windowHost"] = obj
|
||||
return self.connections[uri]["windowHost"]
|
||||
|
||||
def show_host(self, uri):
|
||||
def _do_show_host(self, src, uri):
|
||||
try:
|
||||
self._get_host_dialog(uri).show()
|
||||
except Exception, e:
|
||||
self.err.show_err(_("Error launching host dialog: %s") % str(e),
|
||||
"".join(traceback.format_exc()))
|
||||
src.err.show_err(_("Error launching host dialog: %s") % str(e),
|
||||
"".join(traceback.format_exc()))
|
||||
|
||||
def _get_connect_dialog(self):
|
||||
if self.windowConnect:
|
||||
@ -667,12 +623,12 @@ class vmmEngine(gobject.GObject):
|
||||
self.windowConnect = obj
|
||||
return self.windowConnect
|
||||
|
||||
def show_connect(self):
|
||||
def _do_show_connect(self, src):
|
||||
try:
|
||||
self._get_connect_dialog().show()
|
||||
except Exception, e:
|
||||
self.err.show_err(_("Error launching connect dialog: %s") % str(e),
|
||||
"".join(traceback.format_exc()))
|
||||
src.err.show_err(_("Error launching connect dialog: %s") % str(e),
|
||||
"".join(traceback.format_exc()))
|
||||
|
||||
def _get_details_dialog(self, uri, uuid):
|
||||
if uuid in self.connections[uri]["windowDetails"]:
|
||||
@ -689,42 +645,30 @@ class vmmEngine(gobject.GObject):
|
||||
obj.connect("action-run-domain", self._do_run_domain)
|
||||
obj.connect("action-shutdown-domain", self._do_shutdown_domain)
|
||||
obj.connect("action-reboot-domain", self._do_reboot_domain)
|
||||
obj.connect("action-exit-app", self._do_exit_app)
|
||||
obj.connect("action-exit-app", self.exit_app)
|
||||
obj.connect("action-view-manager", self._do_show_manager)
|
||||
obj.connect("action-migrate-domain", self._do_migrate_domain)
|
||||
obj.connect("action-clone-domain", self._do_clone_domain)
|
||||
obj.connect("action-migrate-domain", self._do_show_migrate)
|
||||
obj.connect("action-clone-domain", self._do_show_clone)
|
||||
|
||||
self.connections[uri]["windowDetails"][uuid] = obj
|
||||
self.connections[uri]["windowDetails"][uuid].show()
|
||||
return self.connections[uri]["windowDetails"][uuid]
|
||||
|
||||
def show_details(self, uri, uuid):
|
||||
def _do_show_details(self, src, uri, uuid):
|
||||
try:
|
||||
details = self._get_details_dialog(uri, uuid)
|
||||
details.show()
|
||||
return details
|
||||
except Exception, e:
|
||||
self.err.show_err(_("Error launching details: %s") % str(e),
|
||||
"".join(traceback.format_exc()))
|
||||
src.err.show_err(_("Error launching details: %s") % str(e),
|
||||
"".join(traceback.format_exc()))
|
||||
|
||||
def show_console(self, uri, uuid):
|
||||
win = self.show_details(uri, uuid)
|
||||
def _do_show_console(self, src, uri, uuid):
|
||||
win = self._do_show_details(src, uri, uuid)
|
||||
if not win:
|
||||
return
|
||||
win.activate_console_page()
|
||||
|
||||
def show_details_performance(self, uri, uuid):
|
||||
win = self.show_details(uri, uuid)
|
||||
if not win:
|
||||
return
|
||||
win.activate_performance_page()
|
||||
|
||||
def show_details_config(self, uri, uuid):
|
||||
win = self.show_details(uri, uuid)
|
||||
if not win:
|
||||
return
|
||||
win.activate_config_page()
|
||||
|
||||
def get_manager(self):
|
||||
if self.windowManager:
|
||||
return self.windowManager
|
||||
@ -737,8 +681,8 @@ class vmmEngine(gobject.GObject):
|
||||
obj.connect("action-reboot-domain", self._do_reboot_domain)
|
||||
obj.connect("action-destroy-domain", self._do_destroy_domain)
|
||||
obj.connect("action-save-domain", self._do_save_domain)
|
||||
obj.connect("action-migrate-domain", self._do_migrate_domain)
|
||||
obj.connect("action-clone-domain", self._do_clone_domain)
|
||||
obj.connect("action-migrate-domain", self._do_show_migrate)
|
||||
obj.connect("action-clone-domain", self._do_show_clone)
|
||||
obj.connect("action-show-console", self._do_show_console)
|
||||
obj.connect("action-show-details", self._do_show_details)
|
||||
obj.connect("action-show-preferences", self._do_show_preferences)
|
||||
@ -748,23 +692,25 @@ class vmmEngine(gobject.GObject):
|
||||
obj.connect("action-show-host", self._do_show_host)
|
||||
obj.connect("action-show-connect", self._do_show_connect)
|
||||
obj.connect("action-connect", self._do_connect)
|
||||
obj.connect("action-refresh-console", self._do_refresh_console)
|
||||
obj.connect("action-exit-app", self._do_exit_app)
|
||||
obj.connect("action-refresh-console", self.refresh_console)
|
||||
obj.connect("action-exit-app", self.exit_app)
|
||||
|
||||
self.windowManager = obj
|
||||
return self.windowManager
|
||||
|
||||
def toggle_manager(self):
|
||||
def _do_toggle_manager(self, ignore):
|
||||
manager = self.get_manager()
|
||||
if not manager.close():
|
||||
manager.show()
|
||||
|
||||
def show_manager(self):
|
||||
def _do_show_manager(self, src):
|
||||
try:
|
||||
self.get_manager().show()
|
||||
except Exception, e:
|
||||
self.err.show_err(_("Error launching manager: %s") % str(e),
|
||||
"".join(traceback.format_exc()))
|
||||
if not src:
|
||||
raise
|
||||
src.err.show_err(_("Error launching manager: %s") % str(e),
|
||||
"".join(traceback.format_exc()))
|
||||
|
||||
def _get_create_dialog(self):
|
||||
if self.windowCreate:
|
||||
@ -776,14 +722,14 @@ class vmmEngine(gobject.GObject):
|
||||
self.windowCreate = obj
|
||||
return self.windowCreate
|
||||
|
||||
def show_create(self, uri):
|
||||
def _do_show_create(self, src, uri):
|
||||
try:
|
||||
self._get_create_dialog.show(uri)
|
||||
except Exception, e:
|
||||
self.err.show_err(_("Error launching manager: %s") % str(e),
|
||||
"".join(traceback.format_exc()))
|
||||
src.err.show_err(_("Error launching manager: %s") % str(e),
|
||||
"".join(traceback.format_exc()))
|
||||
|
||||
def show_migrate(self, uri, uuid):
|
||||
def _do_show_migrate(self, src, uri, uuid):
|
||||
try:
|
||||
conn = self._lookup_connection(uri)
|
||||
vm = conn.get_vm(uuid)
|
||||
@ -794,10 +740,10 @@ class vmmEngine(gobject.GObject):
|
||||
self.windowMigrate.set_state(vm)
|
||||
self.windowMigrate.show()
|
||||
except Exception, e:
|
||||
self.err.show_err(_("Error launching migrate dialog: %s") %
|
||||
str(e), "".join(traceback.format_exc()))
|
||||
src.err.show_err(_("Error launching migrate dialog: %s") %
|
||||
str(e), "".join(traceback.format_exc()))
|
||||
|
||||
def show_clone(self, uri, uuid):
|
||||
def _do_show_clone(self, src, uri, uuid):
|
||||
con = self._lookup_connection(uri)
|
||||
orig_vm = con.get_vm(uuid)
|
||||
clone_window = self.connections[uri]["windowClone"]
|
||||
@ -812,28 +758,58 @@ class vmmEngine(gobject.GObject):
|
||||
|
||||
clone_window.show()
|
||||
except Exception, e:
|
||||
self.err.show_err(_("Error setting clone parameters: %s") %
|
||||
str(e), "".join(traceback.format_exc()))
|
||||
src.err.show_err(_("Error setting clone parameters: %s") %
|
||||
str(e), "".join(traceback.format_exc()))
|
||||
|
||||
##########################################
|
||||
# Window launchers from virt-manager cli #
|
||||
##########################################
|
||||
|
||||
def show_manager(self):
|
||||
self._do_show_manager(None)
|
||||
|
||||
def show_create(self, uri):
|
||||
win = self._do_show_create(self.get_manager(), uri)
|
||||
if not win:
|
||||
return
|
||||
win.show()
|
||||
|
||||
def show_console(self, uri, uuid):
|
||||
win = self._do_show_details(self.get_manager(), uri, uuid)
|
||||
if not win:
|
||||
return
|
||||
win.activate_console_page()
|
||||
|
||||
def show_details_performance(self, uri, uuid):
|
||||
win = self._do_show_details(self.get_manager(), uri, uuid)
|
||||
if not win:
|
||||
return
|
||||
win.activate_performance_page()
|
||||
|
||||
def show_details_config(self, uri, uuid):
|
||||
win = self._do_show_details(self.get_manager(), uri, uuid)
|
||||
if not win:
|
||||
return
|
||||
win.activate_config_page()
|
||||
|
||||
#######################################
|
||||
# Domain actions run/destroy/save ... #
|
||||
#######################################
|
||||
|
||||
def save_domain(self, src, uri, uuid):
|
||||
def _do_save_domain(self, src, uri, uuid):
|
||||
conn = self._lookup_connection(uri)
|
||||
vm = conn.get_vm(uuid)
|
||||
managed = bool(vm.managedsave_supported)
|
||||
do_prompt = self.config.get_confirm_poweroff()
|
||||
|
||||
if not managed and conn.is_remote():
|
||||
self.err.val_err(_("Saving virtual machines over remote "
|
||||
"connections is not supported with this "
|
||||
"libvirt version or hypervisor."))
|
||||
src.err.val_err(_("Saving virtual machines over remote "
|
||||
"connections is not supported with this "
|
||||
"libvirt version or hypervisor."))
|
||||
return
|
||||
|
||||
if do_prompt:
|
||||
res = self.err.warn_chkbox(
|
||||
res = src.err.warn_chkbox(
|
||||
text1=_("Are you sure you want to save "
|
||||
"'%s'?" % vm.get_name()),
|
||||
chktext=_("Don't ask me again."),
|
||||
@ -846,7 +822,7 @@ class vmmEngine(gobject.GObject):
|
||||
|
||||
path = None
|
||||
if not managed:
|
||||
path = util.browse_local(src.window.get_widget("vmm-details"),
|
||||
path = util.browse_local(src.topwin,
|
||||
_("Save Virtual Machine"),
|
||||
self.config, conn,
|
||||
dialog_type=gtk.FILE_CHOOSER_ACTION_SAVE,
|
||||
@ -861,7 +837,7 @@ class vmmEngine(gobject.GObject):
|
||||
error, details = progWin.get_error()
|
||||
|
||||
if error is not None:
|
||||
self.err.show_err(_("Error saving domain: %s") % error, details)
|
||||
src.err.show_err(_("Error saving domain: %s") % error, details)
|
||||
|
||||
def _save_callback(self, vm, file_to_save, asyncjob):
|
||||
try:
|
||||
@ -873,14 +849,14 @@ class vmmEngine(gobject.GObject):
|
||||
except Exception, e:
|
||||
asyncjob.set_error(str(e), "".join(traceback.format_exc()))
|
||||
|
||||
def restore_domain(self, src, uri):
|
||||
def _do_restore_domain(self, src, uri):
|
||||
conn = self._lookup_connection(uri)
|
||||
if conn.is_remote():
|
||||
self.err.val_err(_("Restoring virtual machines over remote "
|
||||
"connections is not yet supported"))
|
||||
src.err.val_err(_("Restoring virtual machines over remote "
|
||||
"connections is not yet supported"))
|
||||
return
|
||||
|
||||
path = util.browse_local(src.window.get_widget("vmm-manager"),
|
||||
path = util.browse_local(src.topwin,
|
||||
_("Restore Virtual Machine"),
|
||||
self.config, conn,
|
||||
browse_reason=self.config.CONFIG_DIR_RESTORE)
|
||||
@ -888,16 +864,16 @@ class vmmEngine(gobject.GObject):
|
||||
if not path:
|
||||
return
|
||||
|
||||
progWin = vmmAsyncJob(self.config, self.restore_saved_callback,
|
||||
progWin = vmmAsyncJob(self.config, self._restore_saved_callback,
|
||||
[path, conn], _("Restoring Virtual Machine"))
|
||||
progWin.run()
|
||||
error, details = progWin.get_error()
|
||||
|
||||
if error is not None:
|
||||
self.err.show_err(error, details,
|
||||
title=_("Error restoring domain"))
|
||||
src.err.show_err(error, details,
|
||||
title=_("Error restoring domain"))
|
||||
|
||||
def restore_saved_callback(self, file_to_load, conn, asyncjob):
|
||||
def _restore_saved_callback(self, file_to_load, conn, asyncjob):
|
||||
try:
|
||||
newconn = util.dup_conn(self.config, conn,
|
||||
return_conn_class=True)
|
||||
@ -908,13 +884,13 @@ class vmmEngine(gobject.GObject):
|
||||
details = "".join(traceback.format_exc())
|
||||
asyncjob.set_error(err, details)
|
||||
|
||||
def destroy_domain(self, src, uri, uuid):
|
||||
def _do_destroy_domain(self, src, uri, uuid):
|
||||
conn = self._lookup_connection(uri)
|
||||
vm = conn.get_vm(uuid)
|
||||
do_prompt = self.config.get_confirm_forcepoweroff()
|
||||
|
||||
if do_prompt:
|
||||
res = self.err.warn_chkbox(
|
||||
res = src.err.warn_chkbox(
|
||||
text1=(_("Are you sure you want to force poweroff '%s'?") %
|
||||
vm.get_name()),
|
||||
text2=_("This will immediately poweroff the VM without "
|
||||
@ -931,16 +907,16 @@ class vmmEngine(gobject.GObject):
|
||||
try:
|
||||
vm.destroy()
|
||||
except Exception, e:
|
||||
self.err.show_err(_("Error shutting down domain: %s" % str(e)),
|
||||
"".join(traceback.format_exc()))
|
||||
src.err.show_err(_("Error shutting down domain: %s" % str(e)),
|
||||
"".join(traceback.format_exc()))
|
||||
|
||||
def suspend_domain(self, src, uri, uuid):
|
||||
def _do_suspend_domain(self, src, uri, uuid):
|
||||
conn = self._lookup_connection(uri)
|
||||
vm = conn.get_vm(uuid)
|
||||
do_prompt = self.config.get_confirm_pause()
|
||||
|
||||
if do_prompt:
|
||||
res = self.err.warn_chkbox(
|
||||
res = src.err.warn_chkbox(
|
||||
text1=_("Are you sure you want to pause "
|
||||
"'%s'?" % vm.get_name()),
|
||||
chktext=_("Don't ask me again."),
|
||||
@ -955,10 +931,10 @@ class vmmEngine(gobject.GObject):
|
||||
try:
|
||||
vm.suspend()
|
||||
except Exception, e:
|
||||
self.err.show_err(_("Error pausing domain: %s" % str(e)),
|
||||
"".join(traceback.format_exc()))
|
||||
src.err.show_err(_("Error pausing domain: %s" % str(e)),
|
||||
"".join(traceback.format_exc()))
|
||||
|
||||
def resume_domain(self, src, uri, uuid):
|
||||
def _do_resume_domain(self, src, uri, uuid):
|
||||
conn = self._lookup_connection(uri)
|
||||
vm = conn.get_vm(uuid)
|
||||
|
||||
@ -966,10 +942,10 @@ class vmmEngine(gobject.GObject):
|
||||
try:
|
||||
vm.resume()
|
||||
except Exception, e:
|
||||
self.err.show_err(_("Error unpausing domain: %s" % str(e)),
|
||||
"".join(traceback.format_exc()))
|
||||
src.err.show_err(_("Error unpausing domain: %s" % str(e)),
|
||||
"".join(traceback.format_exc()))
|
||||
|
||||
def run_domain(self, src, uri, uuid):
|
||||
def _do_run_domain(self, src, uri, uuid):
|
||||
conn = self._lookup_connection(uri)
|
||||
vm = conn.get_vm(uuid)
|
||||
|
||||
@ -977,16 +953,16 @@ class vmmEngine(gobject.GObject):
|
||||
try:
|
||||
vm.startup()
|
||||
except Exception, e:
|
||||
self.err.show_err(_("Error starting domain: %s" % str(e)),
|
||||
"".join(traceback.format_exc()))
|
||||
src.err.show_err(_("Error starting domain: %s" % str(e)),
|
||||
"".join(traceback.format_exc()))
|
||||
|
||||
def shutdown_domain(self, src, uri, uuid):
|
||||
def _do_shutdown_domain(self, src, uri, uuid):
|
||||
conn = self._lookup_connection(uri)
|
||||
vm = conn.get_vm(uuid)
|
||||
do_prompt = self.config.get_confirm_poweroff()
|
||||
|
||||
if do_prompt:
|
||||
res = self.err.warn_chkbox(
|
||||
res = src.err.warn_chkbox(
|
||||
text1=_("Are you sure you want to poweroff "
|
||||
"'%s'?" % vm.get_name()),
|
||||
chktext=_("Don't ask me again."),
|
||||
@ -1001,16 +977,16 @@ class vmmEngine(gobject.GObject):
|
||||
try:
|
||||
vm.shutdown()
|
||||
except Exception, e:
|
||||
self.err.show_err(_("Error shutting down domain: %s" % str(e)),
|
||||
"".join(traceback.format_exc()))
|
||||
src.err.show_err(_("Error shutting down domain: %s" % str(e)),
|
||||
"".join(traceback.format_exc()))
|
||||
|
||||
def reboot_domain(self, src, uri, uuid):
|
||||
def _do_reboot_domain(self, src, uri, uuid):
|
||||
conn = self._lookup_connection(uri)
|
||||
vm = conn.get_vm(uuid)
|
||||
do_prompt = self.config.get_confirm_poweroff()
|
||||
|
||||
if do_prompt:
|
||||
res = self.err.warn_chkbox(
|
||||
res = src.err.warn_chkbox(
|
||||
text1=_("Are you sure you want to reboot "
|
||||
"'%s'?" % vm.get_name()),
|
||||
chktext=_("Don't ask me again."),
|
||||
@ -1029,9 +1005,9 @@ class vmmEngine(gobject.GObject):
|
||||
except Exception, reboot_err:
|
||||
no_support = virtinst.support.is_error_nosupport(reboot_err)
|
||||
if not no_support:
|
||||
self.err.show_err(_("Error rebooting domain: %s" %
|
||||
str(reboot_err)),
|
||||
"".join(traceback.format_exc()))
|
||||
src.err.show_err(_("Error rebooting domain: %s" %
|
||||
str(reboot_err)),
|
||||
"".join(traceback.format_exc()))
|
||||
|
||||
if not no_support:
|
||||
return
|
||||
@ -1044,8 +1020,8 @@ class vmmEngine(gobject.GObject):
|
||||
logging.exception("Could not fake a reboot")
|
||||
|
||||
# Raise the original error message
|
||||
self.err.show_err(_("Error rebooting domain: %s" %
|
||||
str(reboot_err)),
|
||||
"".join(traceback.format_exc()))
|
||||
src.err.show_err(_("Error rebooting domain: %s" %
|
||||
str(reboot_err)),
|
||||
"".join(traceback.format_exc()))
|
||||
|
||||
gobject.type_register(vmmEngine)
|
||||
|
@ -22,6 +22,8 @@ import gobject
|
||||
import gtk
|
||||
import gtk.glade
|
||||
|
||||
from virtManager.error import vmmErrorDialog
|
||||
|
||||
try:
|
||||
import appindicator
|
||||
except:
|
||||
@ -71,6 +73,11 @@ class vmmSystray(gobject.GObject):
|
||||
|
||||
self.config = config
|
||||
self.engine = engine
|
||||
self.topwin = None
|
||||
self.err = vmmErrorDialog(None,
|
||||
0, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE,
|
||||
_("Unexpected Error"),
|
||||
_("An unexpected error occurred"))
|
||||
|
||||
self.conn_menuitems = {}
|
||||
self.conn_vm_menuitems = {}
|
||||
|
Loading…
Reference in New Issue
Block a user