From d92f362de8d5791711df77e74e82bf55fcf87d05 Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Wed, 8 Jun 2011 16:33:20 -0400 Subject: [PATCH] manager: Opening VM shouldn't always show 'console' Like when the window is just minimized, it should simply raise the window. Rename signals to be more accurate and remove some of cruft. --- src/virtManager/create.py | 14 ++--------- src/virtManager/details.py | 11 +++----- src/virtManager/engine.py | 51 ++++++++++++++++++++------------------ src/virtManager/manager.py | 40 +++++++++++------------------- src/virtManager/systray.py | 5 ++-- 5 files changed, 50 insertions(+), 71 deletions(-) diff --git a/src/virtManager/create.py b/src/virtManager/create.py index 7d7941e5b..47a86acd5 100644 --- a/src/virtManager/create.py +++ b/src/virtManager/create.py @@ -1648,16 +1648,7 @@ class vmmCreate(vmmGObjectUI): self.close() # Launch details dialog for new VM - vm = self.conn.get_vm(guest.uuid) - gtype = vm.get_graphics_console()[0] - if gtype in self.config.embeddable_graphics(): - self.emit("action-show-console", self.conn.get_uri(), - guest.uuid) - elif vm.get_connection().is_remote(): - self.emit("action-show-terminal", self.conn.get_uri(), - guest.uuid) - - + self.emit("action-show-vm", self.conn.get_uri(), guest.uuid) def do_install(self, asyncjob, guest): meter = vmmCreateMeter(asyncjob) @@ -1869,6 +1860,5 @@ class vmmCreate(vmmGObjectUI): return self.err.val_err(msg, extra) vmmGObjectUI.type_register(vmmCreate) -vmmCreate.signal_new(vmmCreate, "action-show-console", [str, str]) -vmmCreate.signal_new(vmmCreate, "action-show-terminal", [str, str]) +vmmCreate.signal_new(vmmCreate, "action-show-vm", [str, str]) vmmCreate.signal_new(vmmCreate, "action-show-help", [str]) diff --git a/src/virtManager/details.py b/src/virtManager/details.py index 31774056d..9de4bf790 100644 --- a/src/virtManager/details.py +++ b/src/virtManager/details.py @@ -300,7 +300,6 @@ class vmmDetails(vmmGObjectUI): "on_details_menu_clone_activate": self.control_vm_clone, "on_details_menu_migrate_activate": self.control_vm_migrate, "on_details_menu_screenshot_activate": self.control_vm_screenshot, - "on_details_menu_graphics_activate": self.control_vm_console, "on_details_menu_view_toolbar_activate": self.toggle_toolbar, "on_details_menu_view_manager_activate": self.view_manager, "on_details_menu_view_details_toggled": self.details_console_changed, @@ -1188,7 +1187,7 @@ class vmmDetails(vmmGObjectUI): def exit_app(self, src_ignore): self.emit("action-exit-app") - def activate_console_page(self): + def activate_default_page(self): pages = self.window.get_widget("details-pages") pages.set_current_page(PAGE_CONSOLE) @@ -1204,6 +1203,9 @@ class vmmDetails(vmmGObjectUI): self._show_serial_tab(name, serialidx) break + def activate_console_page(self): + pages = self.window.get_widget("details-pages") + pages.set_current_page(PAGE_CONSOLE) def activate_performance_page(self): self.window.get_widget("details-pages").set_current_page(PAGE_DETAILS) @@ -1268,10 +1270,6 @@ class vmmDetails(vmmGObjectUI): self.emit("action-reboot-domain", self.vm.get_connection().get_uri(), self.vm.get_uuid()) - def control_vm_console(self, src_ignore): - self.emit("action-show-console", - self.vm.get_connection().get_uri(), self.vm.get_uuid()) - def control_vm_save(self, src_ignore): self.emit("action-save-domain", self.vm.get_connection().get_uri(), self.vm.get_uuid()) @@ -3036,7 +3034,6 @@ class vmmDetails(vmmGObjectUI): vmmGObjectUI.type_register(vmmDetails) -vmmDetails.signal_new(vmmDetails, "action-show-console", [str, str]) vmmDetails.signal_new(vmmDetails, "action-save-domain", [str, str]) vmmDetails.signal_new(vmmDetails, "action-destroy-domain", [str, str]) vmmDetails.signal_new(vmmDetails, "action-suspend-domain", [str, str]) diff --git a/src/virtManager/engine.py b/src/virtManager/engine.py index 0055a1947..3ae1f7a73 100644 --- a/src/virtManager/engine.py +++ b/src/virtManager/engine.py @@ -64,6 +64,10 @@ def default_uri(): return tryuri +DETAILS_PERF = 1 +DETAILS_CONFIG = 2 +DETAILS_CONSOLE = 3 + ############################# # PackageKit lookup helpers # ############################# @@ -261,8 +265,7 @@ class vmmEngine(vmmGObject): self.systray.connect("action-shutdown-domain", self._do_shutdown_domain) self.systray.connect("action-reboot-domain", self._do_reboot_domain) 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-show-vm", self._do_show_vm) self.systray.connect("action-exit-app", self.exit_app) def system_tray_changed(self, *ignore): @@ -698,22 +701,29 @@ class vmmEngine(vmmGObject): obj.connect("details-closed", self.decrement_window_counter) self.connections[uri]["windowDetails"][uuid] = obj - self.connections[uri]["windowDetails"][uuid].show() return self.connections[uri]["windowDetails"][uuid] - def _do_show_details(self, src, uri, uuid): + def _show_vm_helper(self, src, uri, uuid, page=None, forcepage=False): try: details = self._get_details_dialog(uri, uuid) + + if forcepage or not details.is_visible(): + if page == DETAILS_PERF: + details.activate_performance_page() + elif page == DETAILS_CONFIG: + details.activate_config_page() + elif page == DETAILS_CONSOLE: + details.activate_console_page() + elif page is None: + details.activate_default_page() + details.show() return details except Exception, e: src.err.show_err(_("Error launching details: %s") % str(e)) - 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 _do_show_vm(self, src, uri, uuid): + self._show_vm_helper(src, uri, uuid) def get_manager(self): if self.windowManager: @@ -729,8 +739,7 @@ class vmmEngine(vmmGObject): obj.connect("action-save-domain", self._do_save_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-vm", self._do_show_vm) obj.connect("action-show-preferences", self._do_show_preferences) obj.connect("action-show-create", self._do_show_create) obj.connect("action-show-help", self._do_show_help) @@ -766,7 +775,7 @@ class vmmEngine(vmmGObject): return self.windowCreate obj = vmmCreate(self) - obj.connect("action-show-console", self._do_show_console) + obj.connect("action-show-vm", self._do_show_vm) obj.connect("action-show-help", self._do_show_help) self.windowCreate = obj return self.windowCreate @@ -824,22 +833,16 @@ class vmmEngine(vmmGObject): self._do_show_create(self.get_manager(), uri) def show_domain_console(self, uri, uuid): - win = self._do_show_details(self.get_manager(), uri, uuid) - if not win: - return - win.activate_console_page() + self._show_vm_helper(self.get_manager(), uri, uuid, + page=DETAILS_CONSOLE, forcepage=True) def show_domain_editor(self, uri, uuid): - win = self._do_show_details(self.get_manager(), uri, uuid) - if not win: - return - win.activate_config_page() + self._show_vm_helper(self.get_manager(), uri, uuid, + page=DETAILS_CONFIG, forcepage=True) def show_domain_performance(self, uri, uuid): - win = self._do_show_details(self.get_manager(), uri, uuid) - if not win: - return - win.activate_performance_page() + self._show_vm_helper(self.get_manager(), uri, uuid, + page=DETAILS_PERF, forcepage=True) ####################################### # Domain actions run/destroy/save ... # diff --git a/src/virtManager/manager.py b/src/virtManager/manager.py index c4bcf75c8..b1837ee3f 100644 --- a/src/virtManager/manager.py +++ b/src/virtManager/manager.py @@ -109,16 +109,16 @@ class vmmManager(vmmGObjectUI): "on_menu_file_quit_activate": self.exit_app, "on_menu_file_close_activate": self.close, "on_vmm_close_clicked": self.close, - "on_vm_open_clicked": self.open_vm_console, + "on_vm_open_clicked": self.show_vm, "on_vm_run_clicked": self.start_vm, "on_vm_new_clicked": self.new_vm, "on_vm_shutdown_clicked": self.poweroff_vm, "on_vm_pause_clicked": self.pause_vm_button, - "on_menu_edit_details_activate": self.open_vm_console, + "on_menu_edit_details_activate": self.show_vm, "on_menu_edit_delete_activate": self.do_delete, "on_menu_host_details_activate": self.show_host, - "on_vm_list_row_activated": self.open_vm_console, + "on_vm_list_row_activated": self.show_vm, "on_vm_list_button_press_event": self.popup_vm_menu_button, "on_vm_list_key_press_event": self.popup_vm_menu_key, @@ -333,7 +333,7 @@ class vmmManager(vmmGObjectUI): add_vm_menu("delete", _("_Delete"), delete_icon, self.do_delete) add_sep(self.vmmenu, self.vmmenu_items, "hsep2") - add_vm_menu("open", gtk.STOCK_OPEN, None, self.open_vm_console) + add_vm_menu("open", gtk.STOCK_OPEN, None, self.show_vm) self.vmmenu.show() # Build connection context menu @@ -522,30 +522,23 @@ class vmmManager(vmmGObjectUI): uri = self.current_connection_uri(default_selection=True) self.emit("action-show-host", uri) - def open_vm_console(self, ignore, ignore2=None, ignore3=None): - if self.current_vmuuid(): - self.emit("action-show-console", - self.current_connection_uri(), self.current_vmuuid()) - elif self.current_connection(): + def show_vm(self, ignore, ignore2=None, ignore3=None): + conn = self.current_connection() + vm = self.current_vm() + if conn is None: + return + + if vm: + self.emit("action-show-vm", conn.get_uri(), vm.get_uuid()) + else: if not self.open_connection(): - self.emit("action-show-host", self.current_connection_uri()) + self.emit("action-show-host", conn.get_uri()) def open_clone_window(self, ignore1=None, ignore2=None, ignore3=None): if self.current_vmuuid(): self.emit("action-clone-domain", self.current_connection_uri(), self.current_vmuuid()) - def show_vm_details(self, ignore): - conn = self.current_connection() - if conn is None: - return - vm = self.current_vm() - if vm is None: - self.emit("action-show-host", conn.get_uri()) - else: - self.emit("action-show-console", - conn.get_uri(), vm.get_uuid()) - def do_delete(self, ignore=None): conn = self.current_connection() vm = self.current_vm() @@ -1107,10 +1100,7 @@ class vmmManager(vmmGObjectUI): vmmGObjectUI.type_register(vmmManager) vmmManager.signal_new(vmmManager, "action-show-connect", []) -vmmManager.signal_new(vmmManager, "action-show-console", [str, str]) -vmmManager.signal_new(vmmManager, "action-show-terminal", [str, str]) -vmmManager.signal_new(vmmManager, "action-refresh-terminal", [str, str]) -vmmManager.signal_new(vmmManager, "action-show-details", [str, str]) +vmmManager.signal_new(vmmManager, "action-show-vm", [str, str]) vmmManager.signal_new(vmmManager, "action-show-about", []) vmmManager.signal_new(vmmManager, "action-show-host", [str]) vmmManager.signal_new(vmmManager, "action-show-preferences", []) diff --git a/src/virtManager/systray.py b/src/virtManager/systray.py index 76dde62fa..be1e0c250 100644 --- a/src/virtManager/systray.py +++ b/src/virtManager/systray.py @@ -213,7 +213,7 @@ class vmmSystray(vmmGObject): open_item = gtk.ImageMenuItem("gtk-open") open_item.show() open_item.connect("activate", self.run_vm_action, - "action-show-console", vm.get_uuid()) + "action-show-vm", vm.get_uuid()) vm_action_dict = {} vm_action_dict["run"] = run_item @@ -438,6 +438,5 @@ vmmSystray.signal_new(vmmSystray, "action-shutdown-domain", [str, str]) vmmSystray.signal_new(vmmSystray, "action-reboot-domain", [str, str]) vmmSystray.signal_new(vmmSystray, "action-destroy-domain", [str, str]) vmmSystray.signal_new(vmmSystray, "action-show-host", [str]) -vmmSystray.signal_new(vmmSystray, "action-show-details", [str, str]) -vmmSystray.signal_new(vmmSystray, "action-show-console", [str, str]) +vmmSystray.signal_new(vmmSystray, "action-show-vm", [str, str]) vmmSystray.signal_new(vmmSystray, "action-exit-app", [])