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") -- 1.9.0 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list