migrate: convert to singleton

This commit is contained in:
Cole Robinson 2018-03-14 17:50:22 -04:00
parent a915b089cd
commit b94a9fdffb
6 changed files with 18 additions and 24 deletions

View File

@ -341,7 +341,6 @@ class vmmDetails(vmmGObjectUI):
__gsignals__ = { __gsignals__ = {
"action-exit-app": (GObject.SignalFlags.RUN_FIRST, None, []), "action-exit-app": (GObject.SignalFlags.RUN_FIRST, None, []),
"action-view-manager": (GObject.SignalFlags.RUN_FIRST, None, []), "action-view-manager": (GObject.SignalFlags.RUN_FIRST, None, []),
"action-migrate-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]),
"action-clone-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]), "action-clone-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]),
"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, []),

View File

@ -39,7 +39,6 @@ from .error import vmmErrorDialog
from .host import vmmHost from .host import vmmHost
from .inspection import vmmInspection from .inspection import vmmInspection
from .manager import vmmManager from .manager import vmmManager
from .migrate import vmmMigrateDialog
from .systray import vmmSystray from .systray import vmmSystray
DETAILS_PERF = 1 DETAILS_PERF = 1
@ -75,7 +74,6 @@ class vmmEngine(vmmGObject):
self.windowConnect = None self.windowConnect = None
self.windowCreate = None self.windowCreate = None
self.windowManager = None self.windowManager = None
self.windowMigrate = None
self._connstates = {} self._connstates = {}
self.err = vmmErrorDialog() self.err = vmmErrorDialog()
@ -181,7 +179,6 @@ class vmmEngine(vmmGObject):
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-migrate-domain", self._do_show_migrate)
self._systray.connect("action-clone-domain", self._do_show_clone) self._systray.connect("action-clone-domain", self._do_show_clone)
self._systray.connect("action-exit-app", self.exit_app) self._systray.connect("action-exit-app", self.exit_app)
@ -414,10 +411,6 @@ class vmmEngine(vmmGObject):
self.windowCreate.cleanup() self.windowCreate.cleanup()
self.windowCreate = None self.windowCreate = None
if self.windowMigrate:
self.windowMigrate.cleanup()
self.windowMigrate = None
# Do this last, so any manually 'disconnected' signals # Do this last, so any manually 'disconnected' signals
# take precedence over cleanup signal removal # take precedence over cleanup signal removal
for uri in self._connstates: for uri in self._connstates:
@ -663,7 +656,6 @@ class vmmEngine(vmmGObject):
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-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("action-migrate-domain", self._do_show_migrate)
obj.connect("action-clone-domain", self._do_show_clone) obj.connect("action-clone-domain", self._do_show_clone)
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)
@ -697,7 +689,6 @@ class vmmEngine(vmmGObject):
return self.windowManager return self.windowManager
obj = vmmManager() obj = vmmManager()
obj.connect("action-migrate-domain", self._do_show_migrate)
obj.connect("action-clone-domain", self._do_show_clone) obj.connect("action-clone-domain", self._do_show_clone)
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)
@ -744,17 +735,6 @@ class vmmEngine(vmmGObject):
except Exception as e: except Exception as e:
src.err.show_err(_("Error launching manager: %s") % str(e)) src.err.show_err(_("Error launching manager: %s") % str(e))
def _do_show_migrate(self, src, uri, connkey):
try:
vm = self._connobjs[uri].get_vm(connkey)
if not self.windowMigrate:
self.windowMigrate = vmmMigrateDialog()
self.windowMigrate.show(src.topwin, vm)
except Exception as e:
src.err.show_err(_("Error launching migrate dialog: %s") % str(e))
def _do_show_clone(self, src, uri, connkey): def _do_show_clone(self, src, uri, connkey):
conn = self._connobjs[uri] conn = self._connobjs[uri]
connstate = self._connstates[uri] connstate = self._connstates[uri]

View File

@ -95,7 +95,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-migrate-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]),
"action-clone-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]), "action-clone-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]),
"action-exit-app": (GObject.SignalFlags.RUN_FIRST, None, []), "action-exit-app": (GObject.SignalFlags.RUN_FIRST, None, []),
"manager-closed": (GObject.SignalFlags.RUN_FIRST, None, []), "manager-closed": (GObject.SignalFlags.RUN_FIRST, None, []),

View File

@ -41,6 +41,18 @@ NUM_COLS = 3
class vmmMigrateDialog(vmmGObjectUI): class vmmMigrateDialog(vmmGObjectUI):
_instance = None
@classmethod
def show_instance(cls, parentobj, vm):
try:
if not cls._instance:
cls._instance = cls()
cls._instance.show(parentobj.topwin, vm)
except Exception as e:
parentobj.err.show_err(
_("Error launching migrate dialog: %s") % str(e))
def __init__(self): def __init__(self):
vmmGObjectUI.__init__(self, "migrate.ui", "vmm-migrate") vmmGObjectUI.__init__(self, "migrate.ui", "vmm-migrate")
self.vm = None self.vm = None

View File

@ -33,7 +33,6 @@ class vmmSystray(vmmGObject):
__gsignals__ = { __gsignals__ = {
"action-toggle-manager": (GObject.SignalFlags.RUN_FIRST, None, []), "action-toggle-manager": (GObject.SignalFlags.RUN_FIRST, None, []),
"action-view-manager": (GObject.SignalFlags.RUN_FIRST, None, []), "action-view-manager": (GObject.SignalFlags.RUN_FIRST, None, []),
"action-migrate-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]),
"action-clone-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]), "action-clone-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-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]), "action-show-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]),

View File

@ -131,7 +131,7 @@ class VMActionMenu(_VMMenu):
self._add_action(_("Clone..."), "clone", self._add_action(_("Clone..."), "clone",
_make_emit_cb("action-clone-domain"), iconname=None) _make_emit_cb("action-clone-domain"), iconname=None)
self._add_action(_("Migrate..."), "migrate", self._add_action(_("Migrate..."), "migrate",
_make_emit_cb("action-migrate-domain"), iconname=None) VMActionUI.migrate, iconname=None)
self._add_action(_("_Delete"), "delete", self._add_action(_("_Delete"), "delete",
VMActionUI.delete, iconname=Gtk.STOCK_DELETE) VMActionUI.delete, iconname=Gtk.STOCK_DELETE)
@ -333,3 +333,8 @@ class VMActionUI(object):
def delete(src, vm): def delete(src, vm):
from .delete import vmmDeleteDialog from .delete import vmmDeleteDialog
vmmDeleteDialog.show_instance(src, vm) vmmDeleteDialog.show_instance(src, vm)
@staticmethod
def migrate(src, vm):
from .migrate import vmmMigrateDialog
vmmMigrateDialog.show_instance(src, vm)