c6e0a66
changeset:   482:7263412862de
c6e0a66
user:        "Hugh O. Brock <hbrock@redhat.com>"
c6e0a66
date:        Mon Apr 23 15:08:56 2007 -0400
c6e0a66
summary:     Fix up empty combo boxes, non-working file dialogs, and a few other bugs.
c6e0a66
c6e0a66
diff -r 053429952481 -r 7263412862de src/virtManager/addhardware.py
c6e0a66
--- a/src/virtManager/addhardware.py	Mon Apr 16 11:31:48 2007 -0400
c6e0a66
+++ b/src/virtManager/addhardware.py	Mon Apr 23 15:08:56 2007 -0400
c6e0a66
@@ -179,6 +179,7 @@ class vmmAddHardware(gobject.GObject):
c6e0a66
         self.window.get_widget("create-forward").show()
c6e0a66
         self.window.get_widget("create-back").set_sensitive(False)
c6e0a66
         self.window.get_widget("storage-file-size").set_sensitive(False)
c6e0a66
+        self.window.get_widget("create-help").hide()
c6e0a66
 
c6e0a66
         self.change_storage_type()
c6e0a66
         self.change_network_type()
c6e0a66
@@ -190,11 +191,15 @@ class vmmAddHardware(gobject.GObject):
c6e0a66
         self.window.get_widget("storage-file-address").set_text("")
c6e0a66
         self.window.get_widget("storage-file-size").set_value(2000)
c6e0a66
         self.window.get_widget("non-sparse").set_active(True)
c6e0a66
-
c6e0a66
-        model = self.window.get_widget("net-network").get_model()
c6e0a66
-        self.populate_network_model(model)
c6e0a66
-        device = self.window.get_widget("net-device").get_model()
c6e0a66
-        self.populate_device_model(device)
c6e0a66
+        self.window.get_widget("hardware-type").set_active(0)
c6e0a66
+
c6e0a66
+        net_box = self.window.get_widget("net-network")
c6e0a66
+        self.populate_network_model(net_box.get_model())
c6e0a66
+        net_box.set_active(0)
c6e0a66
+        
c6e0a66
+        dev_box = self.window.get_widget("net-device")
c6e0a66
+        self.populate_device_model(dev_box.get_model())
c6e0a66
+        dev_box.set_active(0)
c6e0a66
 
c6e0a66
 
c6e0a66
     def forward(self, ignore=None):
c6e0a66
@@ -414,23 +419,38 @@ class vmmAddHardware(gobject.GObject):
c6e0a66
 
c6e0a66
     def browse_storage_file_address(self, src, ignore=None):
c6e0a66
         self.window.get_widget("storage-file-size").set_sensitive(True)
c6e0a66
-        fcdialog = gtk.FileChooserDialog(_("Locate or Create New Storage File"),
c6e0a66
-                                         self.window.get_widget("vmm-create"),
c6e0a66
-                                         gtk.FILE_CHOOSER_ACTION_SAVE,
c6e0a66
+        folder = self.config.get_default_image_dir(self.vm.get_connection())
c6e0a66
+        file = self._browse_file(_("Locate or Create New Storage File"), \
c6e0a66
+                                 folder=folder, confirm_overwrite=True)
c6e0a66
+        if file != None:
c6e0a66
+            self.window.get_widget("storage-file-address").set_text(file)
c6e0a66
+
c6e0a66
+    def _browse_file(self, dialog_name, folder=None, type=None, confirm_overwrite=False):
c6e0a66
+        # user wants to browse for an ISO
c6e0a66
+        fcdialog = gtk.FileChooserDialog(dialog_name,
c6e0a66
+                                         self.window.get_widget("vmm-add-hardware"),
c6e0a66
+                                         gtk.FILE_CHOOSER_ACTION_OPEN,
c6e0a66
                                          (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
c6e0a66
                                           gtk.STOCK_OPEN, gtk.RESPONSE_ACCEPT),
c6e0a66
                                          None)
c6e0a66
-
c6e0a66
-        fcdialog.set_current_folder(self.config.get_default_image_dir(self.vm.get_connection()))
c6e0a66
-        fcdialog.set_do_overwrite_confirmation(True)
c6e0a66
-        fcdialog.connect("confirm-overwrite", self.confirm_overwrite_callback)
c6e0a66
+        if type != None:
c6e0a66
+            f = gtk.FileFilter()
c6e0a66
+            f.add_pattern("*." + type)
c6e0a66
+            fcdialog.set_filter(f)
c6e0a66
+        if folder != None:
c6e0a66
+            fcdialog.set_current_folder(folder)
c6e0a66
+        if confirm_overwrite:
c6e0a66
+            fcdialog.set_do_overwrite_confirmation(True)
c6e0a66
+            fcdialog.connect("confirm-overwrite", self.confirm_overwrite_callback)
c6e0a66
         response = fcdialog.run()
c6e0a66
         fcdialog.hide()
c6e0a66
-        file = None
c6e0a66
         if(response == gtk.RESPONSE_ACCEPT):
c6e0a66
-            file = fcdialog.get_filename()
c6e0a66
-        if file != None:
c6e0a66
-            self.window.get_widget("storage-file-address").set_text(file)
c6e0a66
+            filename = fcdialog.get_filename()
c6e0a66
+            fcdialog.destroy()
c6e0a66
+            return filename
c6e0a66
+        else:
c6e0a66
+            fcdialog.destroy()
c6e0a66
+            return None
c6e0a66
 
c6e0a66
     def toggle_storage_size(self, ignore1=None, ignore2=None):
c6e0a66
         file = self.get_config_disk_image()
c6e0a66
diff -r 053429952481 -r 7263412862de src/virtManager/create.py
c6e0a66
--- a/src/virtManager/create.py	Mon Apr 16 11:31:48 2007 -0400
c6e0a66
+++ b/src/virtManager/create.py	Mon Apr 23 15:08:56 2007 -0400
c6e0a66
@@ -302,12 +302,16 @@ class vmmCreate(gobject.GObject):
c6e0a66
 
c6e0a66
         # Fill list of OS types
c6e0a66
         self.populate_os_type_model()
c6e0a66
-        self.window.get_widget("os-type").set_active(-1)
c6e0a66
-
c6e0a66
-        model = self.window.get_widget("net-network").get_model()
c6e0a66
-        self.populate_network_model(model)
c6e0a66
-        device = self.window.get_widget("net-device").get_model()
c6e0a66
-        self.populate_device_model(device)
c6e0a66
+        self.window.get_widget("os-type").set_active(0)
c6e0a66
+
c6e0a66
+        net_box = self.window.get_widget("net-network")
c6e0a66
+        self.populate_network_model(net_box.get_model())
c6e0a66
+        net_box.set_active(0)
c6e0a66
+        
c6e0a66
+        dev_box = self.window.get_widget("net-device")
c6e0a66
+        self.populate_device_model(dev_box.get_model())
c6e0a66
+        dev_box.set_active(0)
c6e0a66
+
c6e0a66
         self.install_error = None
c6e0a66
 
c6e0a66
 
c6e0a66
@@ -511,13 +515,13 @@ class vmmCreate(gobject.GObject):
c6e0a66
             except ValueError, e:
c6e0a66
                 self._validation_error_box(_("Invalid FV media address"),e.args[0])
c6e0a66
             try:
c6e0a66
-                if self.get_config_os_type() is not None:
c6e0a66
+                if self.get_config_os_type() is not None and self.get_config_os_type() != "generic":
c6e0a66
                     logging.debug("OS Type: %s" % self.get_config_os_type())
c6e0a66
                     guest.os_type = self.get_config_os_type()
c6e0a66
             except ValueError, e:
c6e0a66
                 self._validation_error_box(_("Invalid FV OS Type"),e.args[0])
c6e0a66
             try:
c6e0a66
-                if self.get_config_os_variant() is not None:
c6e0a66
+                if self.get_config_os_variant() is not None and self.get_config_os_type() != "generic":
c6e0a66
                     logging.debug("OS Variant: %s" % self.get_config_os_variant())
c6e0a66
                     guest.os_variant = self.get_config_os_variant()
c6e0a66
             except ValueError, e:
c6e0a66
@@ -986,6 +990,7 @@ class vmmCreate(gobject.GObject):
c6e0a66
     def populate_os_type_model(self):
c6e0a66
         model = self.window.get_widget("os-type").get_model()
c6e0a66
         model.clear()
c6e0a66
+        model.append(["generic", "Generic"])
c6e0a66
         types = virtinst.FullVirtGuest.list_os_types()
c6e0a66
         types.sort()
c6e0a66
         for type in types:
c6e0a66
@@ -994,6 +999,9 @@ class vmmCreate(gobject.GObject):
c6e0a66
     def populate_os_variant_model(self, type):
c6e0a66
         model = self.window.get_widget("os-variant").get_model()
c6e0a66
         model.clear()
c6e0a66
+        if type=="generic":
c6e0a66
+            model.append(["generic", "Generic"])
c6e0a66
+            return
c6e0a66
         variants = virtinst.FullVirtGuest.list_os_variants(type)
c6e0a66
         variants.sort()
c6e0a66
         for variant in variants:
c6e0a66
@@ -1018,7 +1026,7 @@ class vmmCreate(gobject.GObject):
c6e0a66
             type = model.get_value(box.get_active_iter(), 0)
c6e0a66
             self.populate_os_variant_model(type)
c6e0a66
         variant = self.window.get_widget("os-variant")
c6e0a66
-        variant.set_active(-1)
c6e0a66
+        variant.set_active(0)
c6e0a66
 
c6e0a66
     def change_virt_method(self, ignore=None):
c6e0a66
         arch = self.window.get_widget("cpu-architecture")
c6e0a66