It helps users to recognize controllers <-> disks mapping relationship. Signed-off-by: Lin Ma <lma@xxxxxxxx> --- ui/details.ui | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ virtManager/details.py | 25 ++++++++++++++++++++++++- 2 files changed, 72 insertions(+), 1 deletion(-) diff --git a/ui/details.ui b/ui/details.ui index f307f340..1202db07 100644 --- a/ui/details.ui +++ b/ui/details.ui @@ -4990,6 +4990,54 @@ if you know what you are doing.</small></property> <property name="top_attach">1</property> </packing> </child> + <child> + <object class="GtkLabel" id="disk-list-label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="label" translatable="yes">Disks:</property> + <property name="use_markup">True</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">2</property> + </packing> + </child> + <child> + <object class="GtkBox" id="scsi-disk-box"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">3</property> + <child> + <object class="GtkScrolledWindow" id="scsi-disk-scroll"> + <property name="width_request">270</property> + <property name="height_request">100</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="shadow_type">in</property> + <child> + <object class="GtkTreeView" id="scsi-disk-list"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <child internal-child="selection"> + <object class="GtkTreeSelection" id="scsi-disk-selection"/> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">2</property> + </packing> + </child> </object> </child> </object> diff --git a/virtManager/details.py b/virtManager/details.py index 22e0786e..a9e0cb79 100644 --- a/virtManager/details.py +++ b/virtManager/details.py @@ -1042,6 +1042,16 @@ class vmmDetails(vmmGObjectUI): uiutil.init_combo_text_column(combo, 1) combo.set_active(-1) + attached_disk_list = self.widget("scsi-disk-list") + model = Gtk.ListStore(str) + attached_disk_list.set_model(model) + attached_disk_list.set_headers_visible(False) + diskTextCol = Gtk.TreeViewColumn() + disk_txt = Gtk.CellRendererText() + diskTextCol.pack_start(disk_txt, True) + diskTextCol.add_attribute(disk_txt, 'text', 0) + attached_disk_list.append_column(diskTextCol) + ########################## # Window state listeners # @@ -2995,17 +3005,30 @@ class vmmDetails(vmmGObjectUI): if not dev: return + self.widget("disk-list-label").set_visible(False) + self.widget("scsi-disk-box").set_visible(False) can_remove = True if self.vm.get_xmlobj().os.is_x86() and dev.type == "usb": can_remove = False if dev.type == "pci": can_remove = False if dev.type == "scsi": + model = self.widget("scsi-disk-list").get_model() + model.clear() for disk in self.vm.get_disk_devices(inactive=True): if (dev.type == disk.bus and dev.index == disk.address.controller): can_remove = False - break + name = _label_for_device(disk) + bus = disk.address.bus + target = disk.address.target + unit = disk.address.unit + infoStr = ("%s: bus = %s, target = %s, unit = %s" % + (name, bus, target, unit)) + model.append([infoStr]) + self.widget("disk-list-label").set_visible(not can_remove) + self.widget("scsi-disk-box").set_visible(not can_remove) + self.widget("config-remove").set_sensitive(can_remove) type_label = dev.pretty_desc() -- 2.14.0 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list