engine: connect conn-added in UI classes
This creates a weird situation where we pass the engine to those classes UI functions, but this is a step towards untangling that. While here, get rid of the conn-added connect magic and add a simpler way to access the connection list from the engine
This commit is contained in:
parent
2dcfaafcac
commit
befafe9dc7
|
@ -932,8 +932,7 @@ class vmmCreate(vmmGObjectUI):
|
|||
model.clear()
|
||||
|
||||
default = -1
|
||||
for c in list(self.engine.conns.values()):
|
||||
connobj = c["conn"]
|
||||
for connobj in self.engine.connobjs.values():
|
||||
if not connobj.is_active():
|
||||
continue
|
||||
|
||||
|
@ -956,7 +955,7 @@ class vmmCreate(vmmGObjectUI):
|
|||
if not no_conns:
|
||||
conn_list.set_active(default)
|
||||
activeuri, activedesc = model[default]
|
||||
activeconn = self.engine.conns[activeuri]["conn"]
|
||||
activeconn = self.engine.connobjs[activeuri]
|
||||
|
||||
self.widget("create-conn-label").set_text(activedesc)
|
||||
if len(model) <= 1:
|
||||
|
@ -1428,7 +1427,7 @@ class vmmCreate(vmmGObjectUI):
|
|||
uri = uiutil.get_list_selection(src)
|
||||
newconn = None
|
||||
if uri:
|
||||
newconn = self.engine.conns[uri]["conn"]
|
||||
newconn = self.engine.connobjs[uri]
|
||||
|
||||
# If we aren't visible, let reset_state handle this for us, which
|
||||
# has a better chance of reporting error
|
||||
|
|
|
@ -111,6 +111,14 @@ class vmmEngine(vmmGObject):
|
|||
self.tick()
|
||||
|
||||
|
||||
@property
|
||||
def connobjs(self):
|
||||
ret = {}
|
||||
for uri, conndict in self.conns.items():
|
||||
ret[uri] = conndict["conn"]
|
||||
return ret
|
||||
|
||||
|
||||
############################
|
||||
# Gtk Application handling #
|
||||
############################
|
||||
|
@ -169,7 +177,7 @@ class vmmEngine(vmmGObject):
|
|||
|
||||
|
||||
def _init_systray(self):
|
||||
self._systray = vmmSystray()
|
||||
self._systray = vmmSystray(self)
|
||||
self._systray.connect("action-toggle-manager", self._do_toggle_manager)
|
||||
self._systray.connect("action-show-domain", self._do_show_vm)
|
||||
self._systray.connect("action-migrate-domain", self._do_show_migrate)
|
||||
|
@ -177,9 +185,6 @@ class vmmEngine(vmmGObject):
|
|||
self._systray.connect("action-clone-domain", self._do_show_clone)
|
||||
self._systray.connect("action-exit-app", self.exit_app)
|
||||
|
||||
self.connect("conn-added", self._systray.conn_added)
|
||||
self.connect("conn-removed", self._systray.conn_removed)
|
||||
|
||||
self.add_gsettings_handle(
|
||||
self.config.on_view_system_tray_changed(self._system_tray_changed))
|
||||
|
||||
|
@ -559,15 +564,6 @@ class vmmEngine(vmmGObject):
|
|||
self.emit("conn-removed", uri)
|
||||
self.config.remove_conn(uri)
|
||||
|
||||
def connect(self, name, callback, *args):
|
||||
handle_id = vmmGObject.connect(self, name, callback, *args)
|
||||
|
||||
if name == "conn-added":
|
||||
for conn_dict in list(self.conns.values()):
|
||||
self.emit("conn-added", conn_dict["conn"])
|
||||
|
||||
return handle_id
|
||||
|
||||
def _check_conn(self, uri):
|
||||
conn = self.conns.get(uri)
|
||||
if conn:
|
||||
|
@ -760,7 +756,7 @@ class vmmEngine(vmmGObject):
|
|||
if self.windowManager:
|
||||
return self.windowManager
|
||||
|
||||
obj = vmmManager()
|
||||
obj = vmmManager(self)
|
||||
obj.connect("action-migrate-domain", self._do_show_migrate)
|
||||
obj.connect("action-delete-domain", self._do_delete_domain)
|
||||
obj.connect("action-clone-domain", self._do_show_clone)
|
||||
|
@ -773,9 +769,6 @@ class vmmEngine(vmmGObject):
|
|||
obj.connect("manager-closed", self.decrement_window_counter)
|
||||
obj.connect("remove-conn", self.remove_conn)
|
||||
|
||||
self.connect("conn-added", obj.add_conn)
|
||||
self.connect("conn-removed", obj.remove_conn)
|
||||
|
||||
self.windowManager = obj
|
||||
return self.windowManager
|
||||
|
||||
|
|
|
@ -75,8 +75,12 @@ class vmmInspection(vmmGObject):
|
|||
logging.debug("libguestfs gsetting enabled=%s", str(val))
|
||||
if not val:
|
||||
return
|
||||
|
||||
engine.connect("conn-added", self._conn_added)
|
||||
engine.connect("conn-removed", self._conn_removed)
|
||||
for conn in engine.connobjs.values():
|
||||
self._conn_added(engine, conn)
|
||||
|
||||
self._start()
|
||||
|
||||
def _cleanup(self):
|
||||
|
@ -85,14 +89,11 @@ class vmmInspection(vmmGObject):
|
|||
self._conns = {}
|
||||
self._cached_data = {}
|
||||
|
||||
# Called by the main thread whenever a connection is added or
|
||||
# removed. We tell the inspection thread, so it can track
|
||||
# connections.
|
||||
def _conn_added(self, engine_ignore, conn):
|
||||
def _conn_added(self, _engine, conn):
|
||||
obj = ("conn_added", conn)
|
||||
self._q.put(obj)
|
||||
|
||||
def _conn_removed(self, engine_ignore, uri):
|
||||
def _conn_removed(self, _engine, uri):
|
||||
obj = ("conn_removed", uri)
|
||||
self._q.put(obj)
|
||||
|
||||
|
|
|
@ -103,7 +103,7 @@ class vmmManager(vmmGObjectUI):
|
|||
"remove-conn": (GObject.SignalFlags.RUN_FIRST, None, [str]),
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
def __init__(self, engine):
|
||||
vmmGObjectUI.__init__(self, "manager.ui", "vmm-manager")
|
||||
|
||||
# Mapping of rowkey -> tree model rows to
|
||||
|
@ -183,6 +183,11 @@ class vmmManager(vmmGObjectUI):
|
|||
self.enable_polling(COL_NETWORK)
|
||||
self.enable_polling(COL_MEM)
|
||||
|
||||
engine.connect("conn-added", self._conn_added)
|
||||
engine.connect("conn-removed", self._conn_removed)
|
||||
for conn in engine.connobjs.values():
|
||||
self._conn_added(engine, conn)
|
||||
|
||||
|
||||
##################
|
||||
# Common methods #
|
||||
|
@ -653,9 +658,7 @@ class vmmManager(vmmGObjectUI):
|
|||
|
||||
return row
|
||||
|
||||
def add_conn(self, engine_ignore, conn):
|
||||
# Called from engine.py signal conn-added
|
||||
|
||||
def _conn_added(self, _engine, conn):
|
||||
# Make sure error page isn't showing
|
||||
self.widget("vm-notebook").set_current_page(0)
|
||||
|
||||
|
@ -676,7 +679,7 @@ class vmmManager(vmmGObjectUI):
|
|||
for vm in conn.list_vms():
|
||||
self.vm_added(conn, vm.get_connkey())
|
||||
|
||||
def remove_conn(self, engine_ignore, uri):
|
||||
def _conn_removed(self, _engine, uri):
|
||||
# Called from engine.py signal conn-removed
|
||||
|
||||
model = self.widget("vm-list").get_model()
|
||||
|
|
|
@ -130,8 +130,11 @@ class vmmMigrateDialog(vmmGObjectUI):
|
|||
uiutil.init_combo_text_column(combo, 0)
|
||||
|
||||
# Hook up signals to get connection listing
|
||||
engine.connect("conn-added", self._conn_added_cb)
|
||||
engine.connect("conn-removed", self._conn_removed_cb)
|
||||
engine.connect("conn-added", self._conn_added)
|
||||
engine.connect("conn-removed", self._conn_removed)
|
||||
for conn in engine.connobjs.values():
|
||||
self._conn_added(engine, conn)
|
||||
|
||||
self.widget("migrate-dest").emit("changed")
|
||||
|
||||
self.widget("migrate-mode").set_tooltip_text(
|
||||
|
@ -269,12 +272,10 @@ class vmmMigrateDialog(vmmGObjectUI):
|
|||
self.widget("migrate-direct-box").set_visible(not is_tunnel)
|
||||
self.widget("migrate-tunnel-box").set_visible(is_tunnel)
|
||||
|
||||
def _conn_added_cb(self, engine, conn):
|
||||
ignore = engine
|
||||
def _conn_added(self, _engine, conn):
|
||||
self._conns[conn.get_uri()] = conn
|
||||
|
||||
def _conn_removed_cb(self, engine, uri):
|
||||
ignore = engine
|
||||
def _conn_removed(self, _engine, uri):
|
||||
del(self._conns[uri])
|
||||
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ class vmmSystray(vmmGObject):
|
|||
"action-exit-app": (GObject.SignalFlags.RUN_FIRST, None, []),
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
def __init__(self, engine):
|
||||
vmmGObject.__init__(self)
|
||||
|
||||
self.topwin = None
|
||||
|
@ -59,6 +59,12 @@ class vmmSystray(vmmGObject):
|
|||
|
||||
self.show_systray()
|
||||
|
||||
engine.connect("conn-added", self._conn_added)
|
||||
engine.connect("conn-removed", self._conn_removed)
|
||||
for conn in engine.connobjs.values():
|
||||
self._conn_added(engine, conn)
|
||||
|
||||
|
||||
def is_visible(self):
|
||||
return (self.config.get_view_system_tray() and
|
||||
self.systray_icon and
|
||||
|
@ -166,7 +172,7 @@ class vmmSystray(vmmGObject):
|
|||
self.systray_menu.insert(self.conn_menuitems[uri], 0)
|
||||
|
||||
|
||||
def conn_added(self, engine_ignore, conn):
|
||||
def _conn_added(self, _engine, conn):
|
||||
conn.connect("vm-added", self.vm_added)
|
||||
conn.connect("vm-removed", self.vm_removed)
|
||||
conn.connect("state-changed", self.conn_state_changed)
|
||||
|
@ -188,7 +194,7 @@ class vmmSystray(vmmGObject):
|
|||
self.conn_state_changed(conn)
|
||||
self.populate_vm_list(conn)
|
||||
|
||||
def conn_removed(self, engine_ignore, uri):
|
||||
def _conn_removed(self, _engine, uri):
|
||||
if uri not in self.conn_menuitems:
|
||||
return
|
||||
|
||||
|
|
Loading…
Reference in New Issue