File virtman-vminstall.diff of Package virt-manager

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()
 
openSUSE Build Service is sponsored by