From 9fa9777f1c0ffb747e9c8a0513551c229091e66a Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Wed, 14 Mar 2018 18:58:22 -0400 Subject: [PATCH] engine: Have windows call exit_app directly --- virt-manager | 2 +- virtManager/create.py | 1 + virtManager/details.py | 6 +++--- virtManager/engine.py | 20 ++++++++++---------- virtManager/host.py | 6 +++--- virtManager/manager.py | 4 ++-- virtManager/systray.py | 6 +++--- 7 files changed, 23 insertions(+), 22 deletions(-) diff --git a/virt-manager b/virt-manager index b1e4c0f7a..8b9989c23 100755 --- a/virt-manager +++ b/virt-manager @@ -288,7 +288,7 @@ def main(): def _sigint_handler(user_data): ignore = user_data logging.debug("Received KeyboardInterrupt. Exiting application.") - engine.exit_app(None) + engine.exit_app() GLib.unix_signal_add(GLib.PRIORITY_DEFAULT, signal.SIGINT, _sigint_handler, None) diff --git a/virtManager/create.py b/virtManager/create.py index 4e043a9eb..2f0a732a8 100644 --- a/virtManager/create.py +++ b/virtManager/create.py @@ -40,6 +40,7 @@ from .connmanager import vmmConnectionManager from .baseclass import vmmGObjectUI from .details import vmmDetails from .domain import vmmDomainVirtinst +from .engine import vmmEngine from .mediacombo import vmmMediaCombo from .netlist import vmmNetworkList from .storagebrowse import vmmStorageBrowser diff --git a/virtManager/details.py b/virtManager/details.py index f5dbd8e3e..8df91719c 100644 --- a/virtManager/details.py +++ b/virtManager/details.py @@ -36,6 +36,7 @@ from . import uiutil from .baseclass import vmmGObjectUI from .addhardware import vmmAddHardware from .choosecd import vmmChooseCD +from .engine import vmmEngine from .fsdetails import vmmFSDetails from .gfxdetails import vmmGraphicsDetails from .netlist import vmmNetworkList @@ -339,7 +340,6 @@ def _label_for_os_type(os_type): class vmmDetails(vmmGObjectUI): __gsignals__ = { - "action-exit-app": (GObject.SignalFlags.RUN_FIRST, None, []), "action-view-manager": (GObject.SignalFlags.RUN_FIRST, None, []), "details-closed": (GObject.SignalFlags.RUN_FIRST, None, []), "details-opened": (GObject.SignalFlags.RUN_FIRST, None, []), @@ -1342,8 +1342,8 @@ class vmmDetails(vmmGObjectUI): def view_manager(self, src_ignore): self.emit("action-view-manager") - def exit_app(self, src_ignore): - self.emit("action-exit-app") + def exit_app(self, _src): + vmmEngine.get_instance().exit_app() def activate_default_console_page(self): pages = self.widget("details-pages") diff --git a/virtManager/engine.py b/virtManager/engine.py index 4021b4b58..cfd4efb12 100644 --- a/virtManager/engine.py +++ b/virtManager/engine.py @@ -32,13 +32,8 @@ from . import packageutils from .baseclass import vmmGObject from .connmanager import vmmConnectionManager from .connect import vmmConnect -from .create import vmmCreate -from .details import vmmDetails from .error import vmmErrorDialog -from .host import vmmHost from .inspection import vmmInspection -from .manager import vmmManager -from .systray import vmmSystray DETAILS_PERF = 1 DETAILS_CONFIG = 2 @@ -200,10 +195,10 @@ class vmmEngine(vmmGObject): self.timeout_add(1000, self._add_default_conn) def _init_systray(self): + from .systray import vmmSystray self._systray = vmmSystray() self._systray.connect("action-toggle-manager", self._do_toggle_manager) self._systray.connect("action-show-domain", self._do_show_vm) - self._systray.connect("action-exit-app", self.exit_app) self.add_gsettings_handle( self.config.on_view_system_tray_changed(self._system_tray_changed)) @@ -445,7 +440,11 @@ class vmmEngine(vmmGObject): self.exit_app(src or self) self.idle_add(cb) - def exit_app(self, src): + def exit_app(self): + """ + Public call, manager/details/... use this to force exit the app + """ + src = self if self.err is None: # Already in cleanup return @@ -623,10 +622,10 @@ class vmmEngine(vmmGObject): if connstate.windowHost: return connstate.windowHost + from .host import vmmHost conn = self._connobjs[uri] obj = vmmHost(conn) - obj.connect("action-exit-app", self.exit_app) obj.connect("action-view-manager", self._do_show_manager) obj.connect("host-opened", self.increment_window_counter) obj.connect("host-closed", self.decrement_window_counter) @@ -674,8 +673,8 @@ class vmmEngine(vmmGObject): if connkey in detailsmap: return detailsmap[connkey] + from .details import vmmDetails obj = vmmDetails(self._connobjs[uri].get_vm(connkey)) - obj.connect("action-exit-app", self.exit_app) obj.connect("action-view-manager", self._do_show_manager) obj.connect("details-opened", self.increment_window_counter) obj.connect("details-closed", self.decrement_window_counter) @@ -708,12 +707,12 @@ class vmmEngine(vmmGObject): if self.windowManager: return self.windowManager + from .manager import vmmManager obj = vmmManager() obj.connect("action-show-domain", self._do_show_vm) obj.connect("action-show-create", self._do_show_create) obj.connect("action-show-host", self._do_show_host) obj.connect("action-show-connect", self._do_show_connect) - obj.connect("action-exit-app", self.exit_app) obj.connect("manager-opened", self.increment_window_counter) obj.connect("manager-closed", self.decrement_window_counter) obj.connect("remove-conn", self._remove_conn) @@ -741,6 +740,7 @@ class vmmEngine(vmmGObject): if self.windowCreate: return self.windowCreate + from .create import vmmCreate obj = vmmCreate() obj.connect("action-show-domain", self._do_show_vm) obj.connect("create-opened", self.increment_window_counter) diff --git a/virtManager/host.py b/virtManager/host.py index 2e89720fa..89f0fbe0d 100644 --- a/virtManager/host.py +++ b/virtManager/host.py @@ -33,6 +33,7 @@ from .asyncjob import vmmAsyncJob from .baseclass import vmmGObjectUI from .createnet import vmmCreateNetwork from .createinterface import vmmCreateInterface +from .engine import vmmEngine from .graphwidgets import Sparkline from .storagelist import vmmStorageList @@ -52,7 +53,6 @@ EDIT_INTERFACE_STARTMODE, class vmmHost(vmmGObjectUI): __gsignals__ = { - "action-exit-app": (GObject.SignalFlags.RUN_FIRST, None, []), "action-view-manager": (GObject.SignalFlags.RUN_FIRST, None, []), "host-closed": (GObject.SignalFlags.RUN_FIRST, None, []), "host-opened": (GObject.SignalFlags.RUN_FIRST, None, []), @@ -294,8 +294,8 @@ class vmmHost(vmmGObjectUI): def view_manager(self, src_ignore): self.emit("action-view-manager") - def exit_app(self, src_ignore): - self.emit("action-exit-app") + def exit_app(self, _src): + vmmEngine.get_instance().exit_app() def page_changed(self, src, child, pagenum): diff --git a/virtManager/manager.py b/virtManager/manager.py index 10fbda1cb..398e16b07 100644 --- a/virtManager/manager.py +++ b/virtManager/manager.py @@ -33,6 +33,7 @@ from . import vmmenu from . import uiutil from .baseclass import vmmGObjectUI from .connmanager import vmmConnectionManager +from .engine import vmmEngine from .graphwidgets import CellRendererSparkline # Number of data points for performance graphs @@ -95,7 +96,6 @@ class vmmManager(vmmGObjectUI): "action-show-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]), "action-show-host": (GObject.SignalFlags.RUN_FIRST, None, [str]), "action-show-create": (GObject.SignalFlags.RUN_FIRST, None, [str]), - "action-exit-app": (GObject.SignalFlags.RUN_FIRST, None, []), "manager-closed": (GObject.SignalFlags.RUN_FIRST, None, []), "manager-opened": (GObject.SignalFlags.RUN_FIRST, None, []), "remove-conn": (GObject.SignalFlags.RUN_FIRST, None, [str]), @@ -463,7 +463,7 @@ class vmmManager(vmmGObjectUI): self._window_size = self.topwin.get_size() def exit_app(self, src_ignore=None, src2_ignore=None): - self.emit("action-exit-app") + vmmEngine.get_instance().exit_app() def new_conn(self, src_ignore=None): self.emit("action-show-connect") diff --git a/virtManager/systray.py b/virtManager/systray.py index 910295066..ecaf0ecf7 100644 --- a/virtManager/systray.py +++ b/virtManager/systray.py @@ -26,6 +26,7 @@ from gi.repository import Gtk from . import vmmenu from .baseclass import vmmGObject from .connmanager import vmmConnectionManager +from .engine import vmmEngine from .error import vmmErrorDialog @@ -35,7 +36,6 @@ class vmmSystray(vmmGObject): "action-view-manager": (GObject.SignalFlags.RUN_FIRST, None, []), "action-show-host": (GObject.SignalFlags.RUN_FIRST, None, [str]), "action-show-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]), - "action-exit-app": (GObject.SignalFlags.RUN_FIRST, None, []), } def __init__(self): @@ -300,5 +300,5 @@ class vmmSystray(vmmGObject): menu = self.vm_action_dict[vm.get_connkey()] menu.update_widget_states(vm) - def exit_app(self, ignore): - self.emit("action-exit-app") + def exit_app(self, _src): + vmmEngine.get_instance().exit_app()