If no USB controller, we could add a new one; if had, disable 'create-finish' button and add a tooltip beside type combo. Signed-off-by: Chen Hanxiao <chenhanxiao@xxxxxxxxxxxxxx> --- ui/addhardware.ui | 22 ++++++++++++++++++--- virtManager/addhardware.py | 48 +++++++++++++++++++++++++++++++++++----------- 2 files changed, 56 insertions(+), 14 deletions(-) diff --git a/ui/addhardware.ui b/ui/addhardware.ui index 97d03c0..7a5b30d 100644 --- a/ui/addhardware.ui +++ b/ui/addhardware.ui @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.16.1 --> +<!-- Generated with glade 3.16.0 on Wed Apr 23 16:58:20 2014 --> <interface> - <requires lib="gtk+" version="3.0"/> + <!-- interface-requires gtk+ 3.0 --> <object class="GtkAdjustment" id="adjustment1"> <property name="upper">67000</property> <property name="step_increment">1</property> @@ -169,12 +169,12 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="halign">start</property> - <signal name="changed" handler="on_config_storage_devtype_changed" swapped="no"/> <child internal-child="accessible"> <object class="AtkObject" id="config-storage-devtype-atkobject"> <property name="AtkObject::accessible-name" translatable="yes">Device Type Field</property> </object> </child> + <signal name="changed" handler="on_config_storage_devtype_changed" swapped="no"/> </object> <packing> <property name="left_attach">1</property> @@ -387,6 +387,22 @@ <property name="height">1</property> </packing> </child> + <child> + <object class="GtkImage" id="controller-tooltip"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="stock">gtk-info</property> + </object> + <packing> + <property name="left_attach">2</property> + <property name="top_attach">0</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <placeholder/> + </child> </object> <packing> <property name="position">2</property> diff --git a/virtManager/addhardware.py b/virtManager/addhardware.py index 78235bb..4fc5532 100644 --- a/virtManager/addhardware.py +++ b/virtManager/addhardware.py @@ -325,9 +325,6 @@ class vmmAddHardware(vmmGObjectUI): target_model = Gtk.ListStore(str, str) combo.set_model(target_model) uiutil.set_combo_text_column(combo, 1) - # FIXME: we should deal with controller model - combo.set_visible(False) - self.widget("controller-model-label").set_visible(False) # Available HW options is_local = not self.conn.is_remote() @@ -872,6 +869,22 @@ class vmmAddHardware(vmmGObjectUI): controller_type = self.get_config_controller_type() modellist = self.widget("controller-model") + model_tooltip = self.widget("controller-tooltip") + model_tooltip.set_visible(False) + + controllers = self.vm.get_controller_devices() + if (controller_type == VirtualController.TYPE_USB and + len([x for x in controllers if + (x.type == VirtualController.TYPE_USB)])): + vmname = self.vm.get_name() + tooltip = (_("%s already has a USB controller attached.\n" + "Adding more than one USB controller is not supported.\nYou can change " + "the USB controller type in the VM details screen.") % vmname) + model_tooltip.set_visible(True) + model_tooltip.set_tooltip_text(tooltip) + self.widget("create-finish").set_sensitive(False) + else: + self.widget("create-finish").set_sensitive(True) modellist.set_sensitive(True) self.populate_controller_model_combo(modellist, controller_type, None, True) @@ -1806,16 +1819,29 @@ class vmmAddHardware(vmmGObjectUI): def validate_page_controller(self): conn = self.conn.get_backend() controller_type = self.get_config_controller_type() + model = self.get_config_controller_model() self._dev = VirtualController(conn) - controllers = self.vm.get_controller_devices() - controller_num = [x for x in controllers if - (x.type == controller_type)] - if len(controller_num) > 0: - index_new = max([x.index for x in controller_num]) + 1 - self._dev.index = index_new - - self._dev.type = controller_type + if model == "ich9-ehci1": + for dev in VirtualController.get_usb2_controllers(conn): + self._dev.type = dev.type + self._dev.model = dev.model + self._dev.master_startport = dev.master_startport + if dev.model != "ich9-uhci3": + self.add_device() + else: + controllers = self.vm.get_controller_devices() + controller_num = [x for x in controllers if + (x.type == controller_type)] + if len(controller_num) > 0: + index_new = max([x.index for x in controller_num]) + 1 + self._dev.index = index_new + + self._dev.type = controller_type + if model != "none": + if model == "default": + model = None + self._dev.model = model def validate_page_rng(self): conn = virtinst.VirtualRNGDevice.BACKEND_MODE_CONNECT in \ -- 1.9.0 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list