On 04/24/2014 11:22 AM, Chen Hanxiao wrote: > > On 04/24/2014 11:12 PM, Cole Robinson wrote: >> On 04/21/2014 07:39 PM, Chen Hanxiao wrote: >>> On 04/22/2014 04:02 AM, Cole Robinson wrote: >>>> On 04/21/2014 02:39 AM, Chen Hanxiao wrote: >>>>> Sometimes we need to set remove button as none-sensitive. >>>>> >>>>> This patch introduces show_remove_button method as >>>>> the only interface for showing/removing, >>>>> also easy to maintain. >>>>> >>>>> Signed-off-by: Chen Hanxiao <chenhanxiao@xxxxxxxxxxxxxx> >>>>> --- >>>>> virtManager/details.py | 37 +++++++++++++++++++++++++++++++++---- >>>>> 1 file changed, 33 insertions(+), 4 deletions(-) >>>>> >>>>> diff --git a/virtManager/details.py b/virtManager/details.py >>>>> index 86a81eb..4944bce 100644 >>>>> --- a/virtManager/details.py >>>>> +++ b/virtManager/details.py >>>>> @@ -433,6 +433,31 @@ def _icon_for_device(dev): >>>>> return typemap[devtype] >>>>> +def show_remove_button(dev): >>>>> + # type, bus >>>>> + Values = [[virtinst.VirtualController.TYPE_USB, None], >>>>> + [virtinst.VirtualInputDevice.TYPE_MOUSE , >>>>> + virtinst.VirtualInputDevice.BUS_PS2], >>>>> + [virtinst.VirtualInputDevice.TYPE_MOUSE, >>>>> + virtinst.VirtualInputDevice.BUS_XEN]] >>>>> + try: >>>>> + DEV_TYPE = dev.type >>>>> + except: >>>>> + DEV_TYPE = None >>>>> + >>>>> + try: >>>>> + DEV_BUS = dev.bus >>>>> + except: >>>>> + DEV_BUS = None >>>>> + >>>>> + DEV = [DEV_TYPE, DEV_BUS] >>>>> + >>>>> + if DEV in Values: >>>>> + return False >>>>> + else: >>>>> + return True >>>>> + >>>>> + >>>>> class vmmDetails(vmmGObjectUI): >>>>> __gsignals__ = { >>>>> "action-save-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, >>>>> str]), >>>>> @@ -2754,10 +2779,10 @@ class vmmDetails(vmmGObjectUI): >>>>> self.widget("input-dev-mode").set_text(mode) >>>>> # Can't remove primary Xen or PS/2 mice >>>>> - if inp.type == "mouse" and inp.bus in ("xen", "ps2"): >>>>> - self.widget("config-remove").set_sensitive(False) >>>>> - else: >>>>> + if show_remove_button(inp): >>>>> self.widget("config-remove").set_sensitive(True) >>>>> + else: >>>>> + self.widget("config-remove").set_sensitive(False) >>>>> def refresh_graphics_page(self): >>>>> gfx = self.get_hw_selection(HW_LIST_COL_DEVICE) >>>>> @@ -3036,12 +3061,16 @@ class vmmDetails(vmmGObjectUI): >>>>> model.append(["default", "Default"]) >>>>> model.append(["ich9-ehci1", "USB 2"]) >>>>> model.append(["nec-xhci", "USB 3"]) >>>>> - self.widget("config-remove").set_sensitive(False) >>>>> elif dev.type == virtinst.VirtualController.TYPE_SCSI: >>>>> model.append(["default", "Default"]) >>>>> model.append(["virtio-scsi", "VirtIO SCSI"]) >>>>> else: >>>>> + pass >>>>> + >>>>> + if show_remove_button(dev): >>>>> self.widget("config-remove").set_sensitive(True) >>>>> + else: >>>>> + self.widget("config-remove").set_sensitive(False) >>>>> uiutil.set_combo_entry(self.widget("controller-model"), >>>>> dev.model or "Default") >>>>> >>>> Hmm, I don't really understand the point of centralizing the logic in an >>>> external function, yet still requiring refresh_* functions to call the >>>> function manually. As is this patch doesn't improve things IMO. Do you >>>> need it >>>> for a later patch? >>>> >>>> - Cole >>> I tried to solve the right-click popup menu issue, >>> at that time I think we need this interface. >>> >>> But could not find a way currently :( >>> >> Can you describe how to reproduce? I'll take a look. >> >> - Cole >> > > a) vm -> details > b) select one device(not USB controller) > c) right click on USB controller > d) we could use the popup menu to remove USB controller > Hmm, that doesn't work for me. When I right click, it selects that list entry before showing the pop up menu, so everything is in the right state. Are you using gnome-shell? Weirdness like this is often due to gtk on other desktops. Regardless, we should fix it by forcing that behavior: before showing the popup menu, force select the list entry (if it's not already selected). - Cole _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list