Index: virt-manager-0.8.5/src/virtManager/engine.py =================================================================== --- virt-manager-0.8.5.orig/src/virtManager/engine.py +++ virt-manager-0.8.5/src/virtManager/engine.py @@ -40,7 +40,6 @@ from virtManager.manager import vmmManag from virtManager.migrate import vmmMigrateDialog from virtManager.details import vmmDetails from virtManager.asyncjob import vmmAsyncJob -from virtManager.create import vmmCreate from virtManager.host import vmmHost from virtManager.error import vmmErrorDialog from virtManager.systray import vmmSystray @@ -665,13 +664,44 @@ class vmmEngine(gobject.GObject): return False return True + def _vmmcreate_closing(self,signal,key): + self.windowCreate = None + def show_create(self, uri): - if self.windowCreate == None: - create = vmmCreate(self.get_config(), self) - create.connect("action-show-console", self._do_show_console) - create.connect("action-show-help", self._do_show_help) - self.windowCreate = create - self.windowCreate.show(uri) + conn = self._lookup_connection(uri) + do_remote = conn.is_remote() + if self.windowCreate == None or do_remote != self.remote_install: + try: + if do_remote: + from virtManager.create import vmmCreate + create = vmmCreate(self.get_config(),self) + create.connect("action-show-console", self._do_show_console) + create.connect("action-show-help", self._do_show_help) + create.connect("vmmcreate-closing", self._vmmcreate_closing) + self.remote_install = True + self.windowCreate = create + self.windowCreate.show(uri) + else: + from vminstall.gtk.interface import VMCreate as vmmCreate + create = vmmCreate(virtman=True,key=0) + create.connect("action-show-console", self._do_show_console) + create.connect("vmmcreate-closing", self._vmmcreate_closing) + self.remote_install = False + self.windowCreate = create + self.windowCreate.show() + except Exception, e: + self.err.show_err("%s" % str(e),"".join(traceback.format_exc())) + else: + if do_remote: + self.windowCreate.show(uri) + else: + message_box = gtk.MessageDialog(None, + gtk.DIALOG_MODAL, + gtk.MESSAGE_WARNING, + gtk.BUTTONS_OK, + _("A new installation is already in progress.\n\nUse the YaST \"Create Virtual Machines\" utility for concurrent installations.")) + message_box.run() + message_box.destroy() def add_connection(self, uri, readOnly=None, autoconnect=False): conn = vmmConnection(self.get_config(), uri, readOnly, self) Index: virt-manager-0.8.5/src/virtManager/create.py =================================================================== --- virt-manager-0.8.5.orig/src/virtManager/create.py +++ virt-manager-0.8.5/src/virtManager/create.py @@ -65,6 +65,8 @@ class vmmCreate(gobject.GObject): gobject.TYPE_NONE, (str,str)), "action-show-help": (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, [str]), + "vmmcreate-closing": (gobject.SIGNAL_RUN_FIRST, + gobject.TYPE_NONE, (int,)), } def __init__(self, config, engine): @@ -154,6 +156,7 @@ class vmmCreate(gobject.GObject): self.topwin.present() def close(self, ignore1=None, ignore2=None): + self.emit('vmmcreate-closing', 0) self.topwin.hide() self.remove_timers()