engine: Have windows call exit_app directly

This commit is contained in:
Cole Robinson 2018-03-14 18:58:22 -04:00
parent 6180a3c81f
commit 9fa9777f1c
7 changed files with 23 additions and 22 deletions

View File

@ -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)

View File

@ -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

View File

@ -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")

View File

@ -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)

View File

@ -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):

View File

@ -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")

View File

@ -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()