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): def _sigint_handler(user_data):
ignore = user_data ignore = user_data
logging.debug("Received KeyboardInterrupt. Exiting application.") logging.debug("Received KeyboardInterrupt. Exiting application.")
engine.exit_app(None) engine.exit_app()
GLib.unix_signal_add(GLib.PRIORITY_DEFAULT, signal.SIGINT, GLib.unix_signal_add(GLib.PRIORITY_DEFAULT, signal.SIGINT,
_sigint_handler, None) _sigint_handler, None)

View File

@ -40,6 +40,7 @@ from .connmanager import vmmConnectionManager
from .baseclass import vmmGObjectUI from .baseclass import vmmGObjectUI
from .details import vmmDetails from .details import vmmDetails
from .domain import vmmDomainVirtinst from .domain import vmmDomainVirtinst
from .engine import vmmEngine
from .mediacombo import vmmMediaCombo from .mediacombo import vmmMediaCombo
from .netlist import vmmNetworkList from .netlist import vmmNetworkList
from .storagebrowse import vmmStorageBrowser from .storagebrowse import vmmStorageBrowser

View File

@ -36,6 +36,7 @@ from . import uiutil
from .baseclass import vmmGObjectUI from .baseclass import vmmGObjectUI
from .addhardware import vmmAddHardware from .addhardware import vmmAddHardware
from .choosecd import vmmChooseCD from .choosecd import vmmChooseCD
from .engine import vmmEngine
from .fsdetails import vmmFSDetails from .fsdetails import vmmFSDetails
from .gfxdetails import vmmGraphicsDetails from .gfxdetails import vmmGraphicsDetails
from .netlist import vmmNetworkList from .netlist import vmmNetworkList
@ -339,7 +340,6 @@ def _label_for_os_type(os_type):
class vmmDetails(vmmGObjectUI): class vmmDetails(vmmGObjectUI):
__gsignals__ = { __gsignals__ = {
"action-exit-app": (GObject.SignalFlags.RUN_FIRST, None, []),
"action-view-manager": (GObject.SignalFlags.RUN_FIRST, None, []), "action-view-manager": (GObject.SignalFlags.RUN_FIRST, None, []),
"details-closed": (GObject.SignalFlags.RUN_FIRST, None, []), "details-closed": (GObject.SignalFlags.RUN_FIRST, None, []),
"details-opened": (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): def view_manager(self, src_ignore):
self.emit("action-view-manager") self.emit("action-view-manager")
def exit_app(self, src_ignore): def exit_app(self, _src):
self.emit("action-exit-app") vmmEngine.get_instance().exit_app()
def activate_default_console_page(self): def activate_default_console_page(self):
pages = self.widget("details-pages") pages = self.widget("details-pages")

View File

@ -32,13 +32,8 @@ from . import packageutils
from .baseclass import vmmGObject from .baseclass import vmmGObject
from .connmanager import vmmConnectionManager from .connmanager import vmmConnectionManager
from .connect import vmmConnect from .connect import vmmConnect
from .create import vmmCreate
from .details import vmmDetails
from .error import vmmErrorDialog from .error import vmmErrorDialog
from .host import vmmHost
from .inspection import vmmInspection from .inspection import vmmInspection
from .manager import vmmManager
from .systray import vmmSystray
DETAILS_PERF = 1 DETAILS_PERF = 1
DETAILS_CONFIG = 2 DETAILS_CONFIG = 2
@ -200,10 +195,10 @@ class vmmEngine(vmmGObject):
self.timeout_add(1000, self._add_default_conn) self.timeout_add(1000, self._add_default_conn)
def _init_systray(self): def _init_systray(self):
from .systray import vmmSystray
self._systray = vmmSystray() self._systray = vmmSystray()
self._systray.connect("action-toggle-manager", self._do_toggle_manager) self._systray.connect("action-toggle-manager", self._do_toggle_manager)
self._systray.connect("action-show-domain", self._do_show_vm) self._systray.connect("action-show-domain", self._do_show_vm)
self._systray.connect("action-exit-app", self.exit_app)
self.add_gsettings_handle( self.add_gsettings_handle(
self.config.on_view_system_tray_changed(self._system_tray_changed)) 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.exit_app(src or self)
self.idle_add(cb) 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: if self.err is None:
# Already in cleanup # Already in cleanup
return return
@ -623,10 +622,10 @@ class vmmEngine(vmmGObject):
if connstate.windowHost: if connstate.windowHost:
return connstate.windowHost return connstate.windowHost
from .host import vmmHost
conn = self._connobjs[uri] conn = self._connobjs[uri]
obj = vmmHost(conn) obj = vmmHost(conn)
obj.connect("action-exit-app", self.exit_app)
obj.connect("action-view-manager", self._do_show_manager) obj.connect("action-view-manager", self._do_show_manager)
obj.connect("host-opened", self.increment_window_counter) obj.connect("host-opened", self.increment_window_counter)
obj.connect("host-closed", self.decrement_window_counter) obj.connect("host-closed", self.decrement_window_counter)
@ -674,8 +673,8 @@ class vmmEngine(vmmGObject):
if connkey in detailsmap: if connkey in detailsmap:
return detailsmap[connkey] return detailsmap[connkey]
from .details import vmmDetails
obj = vmmDetails(self._connobjs[uri].get_vm(connkey)) 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("action-view-manager", self._do_show_manager)
obj.connect("details-opened", self.increment_window_counter) obj.connect("details-opened", self.increment_window_counter)
obj.connect("details-closed", self.decrement_window_counter) obj.connect("details-closed", self.decrement_window_counter)
@ -708,12 +707,12 @@ class vmmEngine(vmmGObject):
if self.windowManager: if self.windowManager:
return self.windowManager return self.windowManager
from .manager import vmmManager
obj = vmmManager() obj = vmmManager()
obj.connect("action-show-domain", self._do_show_vm) obj.connect("action-show-domain", self._do_show_vm)
obj.connect("action-show-create", self._do_show_create) obj.connect("action-show-create", self._do_show_create)
obj.connect("action-show-host", self._do_show_host) obj.connect("action-show-host", self._do_show_host)
obj.connect("action-show-connect", self._do_show_connect) 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-opened", self.increment_window_counter)
obj.connect("manager-closed", self.decrement_window_counter) obj.connect("manager-closed", self.decrement_window_counter)
obj.connect("remove-conn", self._remove_conn) obj.connect("remove-conn", self._remove_conn)
@ -741,6 +740,7 @@ class vmmEngine(vmmGObject):
if self.windowCreate: if self.windowCreate:
return self.windowCreate return self.windowCreate
from .create import vmmCreate
obj = vmmCreate() obj = vmmCreate()
obj.connect("action-show-domain", self._do_show_vm) obj.connect("action-show-domain", self._do_show_vm)
obj.connect("create-opened", self.increment_window_counter) obj.connect("create-opened", self.increment_window_counter)

View File

@ -33,6 +33,7 @@ from .asyncjob import vmmAsyncJob
from .baseclass import vmmGObjectUI from .baseclass import vmmGObjectUI
from .createnet import vmmCreateNetwork from .createnet import vmmCreateNetwork
from .createinterface import vmmCreateInterface from .createinterface import vmmCreateInterface
from .engine import vmmEngine
from .graphwidgets import Sparkline from .graphwidgets import Sparkline
from .storagelist import vmmStorageList from .storagelist import vmmStorageList
@ -52,7 +53,6 @@ EDIT_INTERFACE_STARTMODE,
class vmmHost(vmmGObjectUI): class vmmHost(vmmGObjectUI):
__gsignals__ = { __gsignals__ = {
"action-exit-app": (GObject.SignalFlags.RUN_FIRST, None, []),
"action-view-manager": (GObject.SignalFlags.RUN_FIRST, None, []), "action-view-manager": (GObject.SignalFlags.RUN_FIRST, None, []),
"host-closed": (GObject.SignalFlags.RUN_FIRST, None, []), "host-closed": (GObject.SignalFlags.RUN_FIRST, None, []),
"host-opened": (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): def view_manager(self, src_ignore):
self.emit("action-view-manager") self.emit("action-view-manager")
def exit_app(self, src_ignore): def exit_app(self, _src):
self.emit("action-exit-app") vmmEngine.get_instance().exit_app()
def page_changed(self, src, child, pagenum): def page_changed(self, src, child, pagenum):

View File

@ -33,6 +33,7 @@ from . import vmmenu
from . import uiutil from . import uiutil
from .baseclass import vmmGObjectUI from .baseclass import vmmGObjectUI
from .connmanager import vmmConnectionManager from .connmanager import vmmConnectionManager
from .engine import vmmEngine
from .graphwidgets import CellRendererSparkline from .graphwidgets import CellRendererSparkline
# Number of data points for performance graphs # 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-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]),
"action-show-host": (GObject.SignalFlags.RUN_FIRST, None, [str]), "action-show-host": (GObject.SignalFlags.RUN_FIRST, None, [str]),
"action-show-create": (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-closed": (GObject.SignalFlags.RUN_FIRST, None, []),
"manager-opened": (GObject.SignalFlags.RUN_FIRST, None, []), "manager-opened": (GObject.SignalFlags.RUN_FIRST, None, []),
"remove-conn": (GObject.SignalFlags.RUN_FIRST, None, [str]), "remove-conn": (GObject.SignalFlags.RUN_FIRST, None, [str]),
@ -463,7 +463,7 @@ class vmmManager(vmmGObjectUI):
self._window_size = self.topwin.get_size() self._window_size = self.topwin.get_size()
def exit_app(self, src_ignore=None, src2_ignore=None): 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): def new_conn(self, src_ignore=None):
self.emit("action-show-connect") self.emit("action-show-connect")

View File

@ -26,6 +26,7 @@ from gi.repository import Gtk
from . import vmmenu from . import vmmenu
from .baseclass import vmmGObject from .baseclass import vmmGObject
from .connmanager import vmmConnectionManager from .connmanager import vmmConnectionManager
from .engine import vmmEngine
from .error import vmmErrorDialog from .error import vmmErrorDialog
@ -35,7 +36,6 @@ class vmmSystray(vmmGObject):
"action-view-manager": (GObject.SignalFlags.RUN_FIRST, None, []), "action-view-manager": (GObject.SignalFlags.RUN_FIRST, None, []),
"action-show-host": (GObject.SignalFlags.RUN_FIRST, None, [str]), "action-show-host": (GObject.SignalFlags.RUN_FIRST, None, [str]),
"action-show-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]), "action-show-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]),
"action-exit-app": (GObject.SignalFlags.RUN_FIRST, None, []),
} }
def __init__(self): def __init__(self):
@ -300,5 +300,5 @@ class vmmSystray(vmmGObject):
menu = self.vm_action_dict[vm.get_connkey()] menu = self.vm_action_dict[vm.get_connkey()]
menu.update_widget_states(vm) menu.update_widget_states(vm)
def exit_app(self, ignore): def exit_app(self, _src):
self.emit("action-exit-app") vmmEngine.get_instance().exit_app()