From: "Fred A. Kemp" <anonym@xxxxxxxxxx> --- ui/details.ui | 39 ++++++++++++++++++++++++++++++++++++++- virtManager/details.py | 16 +++++++++++++++- virtManager/domain.py | 4 ++++ virtManager/uihelpers.py | 13 +++++++++++++ virtinst/devicedisk.py | 1 + 5 files changed, 71 insertions(+), 2 deletions(-) diff --git a/ui/details.ui b/ui/details.ui index 5d1917f..73fe127 100644 --- a/ui/details.ui +++ b/ui/details.ui @@ -3575,7 +3575,7 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">3</property> - <property name="n_rows">5</property> + <property name="n_rows">6</property> <property name="n_columns">2</property> <property name="column_spacing">8</property> <property name="row_spacing">4</property> @@ -3612,6 +3612,22 @@ </packing> </child> <child> + <object class="GtkLabel" id="disk-removable-label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Removab_le:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">disk-removable</property> + </object> + <packing> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> <object class="GtkCheckButton" id="disk-readonly"> <property name="visible">True</property> <property name="can_focus">True</property> @@ -3648,6 +3664,27 @@ </packing> </child> <child> + <object class="GtkComboBox" id="disk-removable"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="has_entry">True</property> + <signal name="changed" handler="on_disk_removable_combo_changed" swapped="no"/> + <child internal-child="entry"> + <object class="GtkEntry" id="combobox-entry-disk-removable"> + <property name="can_focus">True</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> <object class="GtkLabel" id="label4"> <property name="visible">True</property> <property name="can_focus">False</property> diff --git a/virtManager/details.py b/virtManager/details.py index 1b3f6fd..e0212fe 100644 --- a/virtManager/details.py +++ b/virtManager/details.py @@ -66,6 +66,7 @@ EDIT_INIT, EDIT_DISK_RO, EDIT_DISK_SHARE, +EDIT_DISK_REMOVABLE, EDIT_DISK_CACHE, EDIT_DISK_IO, EDIT_DISK_BUS, @@ -94,7 +95,7 @@ EDIT_WATCHDOG_ACTION, EDIT_CONTROLLER_MODEL, EDIT_TPM_TYPE, -) = range(1, 41) +) = range(1, 42) # Columns in hw list model @@ -475,6 +476,7 @@ class vmmDetails(vmmGObjectUI): "on_disk_readonly_changed": lambda *x: self.enable_apply(x, EDIT_DISK_RO), "on_disk_shareable_changed": lambda *x: self.enable_apply(x, EDIT_DISK_SHARE), + "on_disk_removable_combo_changed": lambda *x: self.enable_apply(x, EDIT_DISK_REMOVABLE), "on_disk_cache_combo_changed": lambda *x: self.enable_apply(x, EDIT_DISK_CACHE), "on_disk_io_combo_changed": lambda *x: self.enable_apply(x, EDIT_DISK_IO), "on_disk_bus_combo_changed": lambda *x: self.enable_apply(x, EDIT_DISK_BUS), @@ -958,6 +960,10 @@ class vmmDetails(vmmGObjectUI): if not (self.conn.is_qemu() or self.conn.is_test_conn()): self.widget("iotune-expander").set_visible(False) + # Disk removable combo + disk_removable = self.widget("disk-removable") + uihelpers.build_disk_removable_combo(self.vm, disk_removable) + # Network source net_source = self.widget("network-source") net_bridge = self.widget("network-bridge-box") @@ -2157,6 +2163,10 @@ class vmmDetails(vmmGObjectUI): add_define(self.vm.define_disk_shareable, dev_id_info, do_shareable) + if self.edited(EDIT_DISK_REMOVABLE): + do_removable = self.get_combo_entry("disk-removable") + add_define(self.vm.define_disk_removable, dev_id_info, do_removable) + if self.edited(EDIT_DISK_CACHE): cache = self.get_combo_entry("disk-cache") add_define(self.vm.define_disk_cache, dev_id_info, cache) @@ -2797,6 +2807,7 @@ class vmmDetails(vmmGObjectUI): ro = disk.read_only share = disk.shareable bus = disk.bus + removable = disk.removable addr = disk.address.type idx = disk.disk_bus_index cache = disk.driver_cache @@ -2828,6 +2839,7 @@ class vmmDetails(vmmGObjectUI): is_cdrom = (devtype == virtinst.VirtualDisk.DEVICE_CDROM) is_floppy = (devtype == virtinst.VirtualDisk.DEVICE_FLOPPY) + is_usb = (bus == "usb") if addr == "spapr-vio": bus = "spapr-vscsi" @@ -2840,6 +2852,8 @@ class vmmDetails(vmmGObjectUI): self.widget("disk-readonly").set_active(ro) self.widget("disk-readonly").set_sensitive(not is_cdrom) self.widget("disk-shareable").set_active(share) + self.set_combo_entry("disk-removable", removable) + self.widget("disk-removable").set_sensitive(is_usb and self.conn.is_qemu()) self.widget("disk-size").set_text(size) self.set_combo_entry("disk-cache", cache) self.set_combo_entry("disk-io", io) diff --git a/virtManager/domain.py b/virtManager/domain.py index b7c286e..1422cf9 100644 --- a/virtManager/domain.py +++ b/virtManager/domain.py @@ -647,6 +647,10 @@ class vmmDomain(vmmLibvirtObject): def change(editdev): editdev.shareable = do_shareable return self._redefine_device(change, devobj) + def define_disk_removable(self, devobj, do_removable): + def change(editdev): + editdev.removable = do_removable + return self._redefine_device(change, devobj) def define_disk_cache(self, devobj, new_cache): def change(editdev): editdev.driver_cache = new_cache or None diff --git a/virtManager/uihelpers.py b/virtManager/uihelpers.py index 1033858..b714881 100644 --- a/virtManager/uihelpers.py +++ b/virtManager/uihelpers.py @@ -395,6 +395,19 @@ def build_disk_bus_combo(vm, combo, no_default=False): combo.set_active(-1) +def build_disk_removable_combo(vm, combo): + ignore = vm + model = Gtk.ListStore(str, str) + combo.set_model(model) + set_combo_text_column(combo, 1) + + options = [[None, _("default")], + ["on", _("on")], + ["off", _("off")]] + for opt in options: + model.append(opt) + + def build_vnc_keymap_combo(vm, combo, no_default=False): ignore = vm model = Gtk.ListStore(str, str) diff --git a/virtinst/devicedisk.py b/virtinst/devicedisk.py index 79e92a8..cefc0c3 100644 --- a/virtinst/devicedisk.py +++ b/virtinst/devicedisk.py @@ -507,6 +507,7 @@ class VirtualDisk(VirtualDevice): bus = XMLProperty("./target/@bus") target = XMLProperty("./target/@dev") + removable = XMLProperty("./target/@removable") read_only = XMLProperty("./readonly", is_bool=True) shareable = XMLProperty("./shareable", is_bool=True) -- 1.7.10.4 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list