diff options
-rw-r--r-- | virtManager/addhardware.py | 97 | ||||
-rw-r--r-- | virtManager/autodrawer.py | 14 | ||||
-rw-r--r-- | virtManager/choosecd.py | 14 | ||||
-rw-r--r-- | virtManager/create.py | 45 | ||||
-rw-r--r-- | virtManager/createinterface.py | 8 | ||||
-rw-r--r-- | virtManager/createnet.py | 18 | ||||
-rw-r--r-- | virtManager/createpool.py | 4 | ||||
-rw-r--r-- | virtManager/createvol.py | 8 | ||||
-rw-r--r-- | virtManager/delete.py | 6 | ||||
-rw-r--r-- | virtManager/details.py | 51 | ||||
-rw-r--r-- | virtManager/fsdetails.py | 14 | ||||
-rw-r--r-- | virtManager/host.py | 14 | ||||
-rw-r--r-- | virtManager/manager.py | 11 | ||||
-rw-r--r-- | virtManager/preferences.py | 18 | ||||
-rw-r--r-- | virtManager/sharedui.py (renamed from virtManager/uihelpers.py) | 120 | ||||
-rw-r--r-- | virtManager/snapshots.py | 10 | ||||
-rw-r--r-- | virtManager/storagebrowse.py | 10 | ||||
-rw-r--r-- | virtManager/systray.py | 4 | ||||
-rw-r--r-- | virtManager/uiutil.py | 117 |
19 files changed, 303 insertions, 280 deletions
diff --git a/virtManager/addhardware.py b/virtManager/addhardware.py index 06f9596a..8719829a 100644 --- a/virtManager/addhardware.py +++ b/virtManager/addhardware.py @@ -34,7 +34,8 @@ from virtinst import (VirtualChannelDevice, VirtualParallelDevice, VirtualTPMDevice, VirtualPanicDevice) from virtinst import VirtualController -from virtManager import uihelpers +from virtManager import sharedui +from virtManager import uiutil from virtManager.fsdetails import vmmFSDetails from virtManager.asyncjob import vmmAsyncJob from virtManager.storagebrowse import vmmStorageBrowser @@ -176,7 +177,7 @@ class vmmAddHardware(vmmGObjectUI): # Virtual network list net_list = self.widget("net-list") bridge_box = self.widget("net-bridge-box") - uihelpers.build_network_list(net_list, bridge_box) + sharedui.build_network_list(net_list, bridge_box) # Network model list netmodel_list = self.widget("net-model") @@ -187,7 +188,7 @@ class vmmAddHardware(vmmGObjectUI): # [bus, label] model = Gtk.ListStore(str, str) widget.set_model(model) - uihelpers.set_combo_text_column(widget, 1) + uiutil.set_combo_text_column(widget, 1) # Disk device type target_list = self.widget("config-storage-devtype") @@ -212,7 +213,7 @@ class vmmAddHardware(vmmGObjectUI): # Sparse tooltip sparse_info = self.widget("config-storage-nosparse-info") - uihelpers.set_sparse_tooltip(sparse_info) + sharedui.set_sparse_tooltip(sparse_info) # Input device type input_list = self.widget("input-type") @@ -275,7 +276,7 @@ class vmmAddHardware(vmmGObjectUI): lst = self.widget("char-target-type") model = Gtk.ListStore(str, str) lst.set_model(model) - uihelpers.set_combo_text_column(lst, 1) + uiutil.set_combo_text_column(lst, 1) if self.conn.is_qemu(): model.append(["virtio", "virtio"]) else: @@ -285,7 +286,7 @@ class vmmAddHardware(vmmGObjectUI): lst = self.widget("char-target-name") model = Gtk.ListStore(str) lst.set_model(model) - uihelpers.set_combo_text_column(lst, 0) + uiutil.set_combo_text_column(lst, 0) for n in VirtualChannelDevice.CHANNEL_NAMES: model.append([n]) @@ -293,7 +294,7 @@ class vmmAddHardware(vmmGObjectUI): lst = self.widget("char-device-type") model = Gtk.ListStore(str, str) lst.set_model(model) - uihelpers.set_combo_text_column(lst, 1) + uiutil.set_combo_text_column(lst, 1) # Watchdog widgets combo = self.widget("watchdog-model") @@ -404,7 +405,7 @@ class vmmAddHardware(vmmGObjectUI): # Storage init label_widget = self.widget("phys-hd-label") label_widget.set_markup("") - uihelpers.update_host_space(self.conn, label_widget) + sharedui.update_host_space(self.conn, label_widget) self.widget("config-storage-create").set_active(True) self.widget("config-storage-size").set_value(8) @@ -429,7 +430,7 @@ class vmmAddHardware(vmmGObjectUI): net_list = self.widget("net-list") net_warn = self.widget("net-list-warn") - uihelpers.populate_network_list(net_list, self.conn) + sharedui.populate_network_list(net_list, self.conn) error = self.conn.netdev_error if error: @@ -542,7 +543,7 @@ class vmmAddHardware(vmmGObjectUI): def build_video_combo(vm, combo, no_default=None): model = Gtk.ListStore(str, str) combo.set_model(model) - uihelpers.set_combo_text_column(combo, 1) + uiutil.set_combo_text_column(combo, 1) combo.get_model().set_sort_column_id(1, Gtk.SortType.ASCENDING) vmmAddHardware.populate_video_combo(vm, combo, no_default) @@ -551,7 +552,7 @@ class vmmAddHardware(vmmGObjectUI): def build_sound_combo(vm, combo, no_default=False): model = Gtk.ListStore(str) combo.set_model(model) - uihelpers.set_combo_text_column(combo, 0) + uiutil.set_combo_text_column(combo, 0) model.set_sort_column_id(0, Gtk.SortType.ASCENDING) stable_defaults = vm.stable_defaults() @@ -573,7 +574,7 @@ class vmmAddHardware(vmmGObjectUI): ignore = vm model = Gtk.ListStore(str) combo.set_model(model) - uihelpers.set_combo_text_column(combo, 0) + uiutil.set_combo_text_column(combo, 0) model.set_sort_column_id(0, Gtk.SortType.ASCENDING) for m in virtinst.VirtualWatchdog.MODELS: @@ -588,7 +589,7 @@ class vmmAddHardware(vmmGObjectUI): ignore = vm model = Gtk.ListStore(str, str) combo.set_model(model) - uihelpers.set_combo_text_column(combo, 1) + uiutil.set_combo_text_column(combo, 1) model.set_sort_column_id(0, Gtk.SortType.ASCENDING) for m in virtinst.VirtualWatchdog.ACTIONS: @@ -615,7 +616,7 @@ class vmmAddHardware(vmmGObjectUI): def build_network_source_mode_combo(vm, combo): model = Gtk.ListStore(str, str) combo.set_model(model) - uihelpers.set_combo_text_column(combo, 1) + uiutil.set_combo_text_column(combo, 1) vmmAddHardware.populate_network_source_mode_combo(vm, combo) combo.set_active(0) @@ -645,7 +646,7 @@ class vmmAddHardware(vmmGObjectUI): def build_network_model_combo(vm, combo): model = Gtk.ListStore(str, str) combo.set_model(model) - uihelpers.set_combo_text_column(combo, 1) + uiutil.set_combo_text_column(combo, 1) model.set_sort_column_id(0, Gtk.SortType.ASCENDING) vmmAddHardware.populate_network_model_combo(vm, combo) @@ -665,7 +666,7 @@ class vmmAddHardware(vmmGObjectUI): def build_smartcard_mode_combo(vm, combo): model = Gtk.ListStore(str, str) combo.set_model(model) - uihelpers.set_combo_text_column(combo, 1) + uiutil.set_combo_text_column(combo, 1) model.set_sort_column_id(0, Gtk.SortType.ASCENDING) vmmAddHardware.populate_smartcard_mode_combo(vm, combo) @@ -693,7 +694,7 @@ class vmmAddHardware(vmmGObjectUI): def build_redir_type_combo(vm, combo): model = Gtk.ListStore(str, str, bool) combo.set_model(model) - uihelpers.set_combo_text_column(combo, 1) + uiutil.set_combo_text_column(combo, 1) vmmAddHardware.populate_redir_type_combo(vm, combo) combo.set_active(0) @@ -712,7 +713,7 @@ class vmmAddHardware(vmmGObjectUI): def build_tpm_type_combo(vm, combo): model = Gtk.ListStore(str, str) combo.set_model(model) - uihelpers.set_combo_text_column(combo, 1) + uiutil.set_combo_text_column(combo, 1) model.set_sort_column_id(0, Gtk.SortType.ASCENDING) vmmAddHardware.populate_tpm_type_combo(vm, combo) @@ -731,7 +732,7 @@ class vmmAddHardware(vmmGObjectUI): ignore = vm model = Gtk.ListStore(str, str) combo.set_model(model) - uihelpers.set_combo_text_column(combo, 1) + uiutil.set_combo_text_column(combo, 1) if not no_default: model.append([None, "default"]) @@ -750,7 +751,7 @@ class vmmAddHardware(vmmGObjectUI): ignore = vm model = Gtk.ListStore(str, str) combo.set_model(model) - uihelpers.set_combo_text_column(combo, 1) + uiutil.set_combo_text_column(combo, 1) combo.set_active(-1) for m in virtinst.VirtualDisk.cache_types: @@ -764,7 +765,7 @@ class vmmAddHardware(vmmGObjectUI): ignore = vm model = Gtk.ListStore(str, str) combo.set_model(model) - uihelpers.set_combo_text_column(combo, 1) + uiutil.set_combo_text_column(combo, 1) model.set_sort_column_id(0, Gtk.SortType.ASCENDING) combo.set_active(-1) @@ -780,7 +781,7 @@ class vmmAddHardware(vmmGObjectUI): ignore = vm model = Gtk.ListStore(str, str) combo.set_model(model) - uihelpers.set_combo_text_column(combo, 1) + uiutil.set_combo_text_column(combo, 1) model.set_sort_column_id(1, Gtk.SortType.ASCENDING) if not no_default: @@ -791,7 +792,7 @@ class vmmAddHardware(vmmGObjectUI): def populate_disk_format_combo(vm, combo, create): model = Gtk.ListStore(str) combo.set_model(model) - uihelpers.set_combo_text_column(combo, 0) + uiutil.set_combo_text_column(combo, 0) formats = ["raw", "qcow2", "qed"] no_create_formats = [] @@ -901,7 +902,7 @@ class vmmAddHardware(vmmGObjectUI): if len(model) == 0: model.append([_("No Devices Available"), None, None, None]) - uihelpers.set_list_selection(devlist, 0) + uiutil.set_list_selection(devlist, 0) def populate_disk_format_combo_wrapper(self, create): format_list = self.widget("config-storage-format") @@ -993,7 +994,7 @@ class vmmAddHardware(vmmGObjectUI): sparse = not self.widget("config-storage-nosparse").get_active() if self.is_default_storage(): - path = uihelpers.get_default_path(self.conn, + path = sharedui.get_default_path(self.conn, self.vm.get_name(), collidelist=collidelist) logging.debug("Default storage path is: %s", path) @@ -1006,7 +1007,7 @@ class vmmAddHardware(vmmGObjectUI): # See if the ideal disk path (/default/pool/vmname.img) # exists, and if unused, prompt the use for using it conn = self.conn.get_backend() - ideal = uihelpers.get_ideal_path(self.conn, self.vm.get_name()) + ideal = sharedui.get_ideal_path(self.conn, self.vm.get_name()) if ideal in collidelist: return diskpath do_exist = False @@ -1087,7 +1088,7 @@ class vmmAddHardware(vmmGObjectUI): net_list = self.widget("net-list") bridge_ent = self.widget("net-bridge") - net_type, net_src = uihelpers.get_network_selection(net_list, + net_type, net_src = sharedui.get_network_selection(net_list, bridge_ent) return net_type, net_src @@ -1124,7 +1125,7 @@ class vmmAddHardware(vmmGObjectUI): return usb_info def get_config_host_device_info(self): - devrow = uihelpers.get_list_selection(self.widget("host-device")) + devrow = uiutil.get_list_selection(self.widget("host-device")) if not devrow: return [] return devrow @@ -1229,10 +1230,10 @@ class vmmAddHardware(vmmGObjectUI): ################ def set_hw_selection(self, page): - uihelpers.set_list_selection(self.widget("hw-list"), page) + uiutil.set_list_selection(self.widget("hw-list"), page) def get_hw_selection(self): - return uihelpers.get_list_selection(self.widget("hw-list")) + return uiutil.get_list_selection(self.widget("hw-list")) def update_char_device_type_model(self): stable_blacklist = ["pipe", "udp"] @@ -1316,7 +1317,7 @@ class vmmAddHardware(vmmGObjectUI): is_auto = self.widget("graphics-port-auto").get_active() is_spice = (gtype == "spice") - uihelpers.set_grid_row_visible(self.widget("graphics-port-box"), + uiutil.set_grid_row_visible(self.widget("graphics-port-box"), not is_auto) self.widget("graphics-port-box").set_visible(not is_auto) self.widget("graphics-tlsport-box").set_visible(is_spice) @@ -1404,7 +1405,7 @@ class vmmAddHardware(vmmGObjectUI): for param_name, widget_name in tpm_widget_mappings.items(): make_visible = self._dev.supports_property(param_name) - uihelpers.set_grid_row_visible(self.widget(widget_name + "-label"), + uiutil.set_grid_row_visible(self.widget(widget_name + "-label"), make_visible) def change_char_auto_socket(self, src): @@ -1412,8 +1413,8 @@ class vmmAddHardware(vmmGObjectUI): return doshow = not src.get_active() - uihelpers.set_grid_row_visible(self.widget("char-path-label"), doshow) - uihelpers.set_grid_row_visible(self.widget("char-mode-label"), doshow) + uiutil.set_grid_row_visible(self.widget("char-path-label"), doshow) + uiutil.set_grid_row_visible(self.widget("char-mode-label"), doshow) def change_char_target_name(self, src): if not src.get_visible(): @@ -1426,7 +1427,7 @@ class vmmAddHardware(vmmGObjectUI): elif (text == VirtualChannelDevice.CHANNEL_NAME_QEMUGA or text == VirtualChannelDevice.CHANNEL_NAME_LIBGUESTFS): settype = "unix" - uihelpers.set_row_selection(self.widget("char-device-type"), settype) + uiutil.set_row_selection(self.widget("char-device-type"), settype) def change_char_device_type(self, src): idx = src.get_active() @@ -1454,14 +1455,14 @@ class vmmAddHardware(vmmGObjectUI): for param_name, widget_name in char_widget_mappings.items(): make_visible = self._dev.supports_property(param_name) - uihelpers.set_grid_row_visible(self.widget(widget_name + "-label"), + uiutil.set_grid_row_visible(self.widget(widget_name + "-label"), make_visible) - uihelpers.set_grid_row_visible( + uiutil.set_grid_row_visible( self.widget("char-target-name-label"), ischan) - uihelpers.set_grid_row_visible( + uiutil.set_grid_row_visible( self.widget("char-target-type-label"), iscon) - uihelpers.set_grid_row_visible( + uiutil.set_grid_row_visible( self.widget("char-auto-socket-label"), show_auto) self.widget("char-auto-socket").emit("toggled") @@ -1475,7 +1476,7 @@ class vmmAddHardware(vmmGObjectUI): return showhost = src.get_model()[src.get_active()][2] - uihelpers.set_grid_row_visible(self.widget("usbredir-host-box"), + uiutil.set_grid_row_visible(self.widget("usbredir-host-box"), showhost) def change_rng(self, ignore1): @@ -1484,8 +1485,8 @@ class vmmAddHardware(vmmGObjectUI): return is_egd = model == virtinst.VirtualRNGDevice.TYPE_EGD - uihelpers.set_grid_row_visible(self.widget("rng-device"), not is_egd) - uihelpers.set_grid_row_visible(self.widget("rng-backend-type"), is_egd) + uiutil.set_grid_row_visible(self.widget("rng-device"), not is_egd) + uiutil.set_grid_row_visible(self.widget("rng-backend-type"), is_egd) backend_type = self.get_config_rng_backend_type() backend_mode = self.get_config_rng_backend_mode() @@ -1493,13 +1494,13 @@ class vmmAddHardware(vmmGObjectUI): bind = backend_mode == virtinst.VirtualRNGDevice.BACKEND_MODE_BIND v = is_egd and (udp or bind) - uihelpers.set_grid_row_visible(self.widget("rng-bind-host-box"), v) + uiutil.set_grid_row_visible(self.widget("rng-bind-host-box"), v) v = is_egd and (udp or not bind) - uihelpers.set_grid_row_visible(self.widget("rng-connect-host-box"), v) + uiutil.set_grid_row_visible(self.widget("rng-connect-host-box"), v) v = is_egd and not udp - uihelpers.set_grid_row_visible(self.widget("rng-backend-mode"), v) + uiutil.set_grid_row_visible(self.widget("rng-backend-mode"), v) ###################### @@ -1659,7 +1660,7 @@ class vmmAddHardware(vmmGObjectUI): # Make sure default pool is running if self.is_default_storage(): - ret = uihelpers.check_default_pool_active(self.err, self.conn) + ret = sharedui.check_default_pool_active(self.err, self.conn) if not ret: return False @@ -1721,7 +1722,7 @@ class vmmAddHardware(vmmGObjectUI): if not res: return False - uihelpers.check_path_search_for_qemu(self.err, self.conn, disk.path) + sharedui.check_path_search_for_qemu(self.err, self.conn, disk.path) # Add a SCSI controller with model virtio-scsi if needed disk.vmm_controller = None @@ -1765,7 +1766,7 @@ class vmmAddHardware(vmmGObjectUI): return self.err.val_err(_("Invalid MAC address"), _("A MAC address must be entered.")) - ret = uihelpers.validate_network(self.err, self.conn, + ret = sharedui.validate_network(self.err, self.conn, nettype, devname, mac, model) if ret is False: return False diff --git a/virtManager/autodrawer.py b/virtManager/autodrawer.py index e50f1c3b..abf0397d 100644 --- a/virtManager/autodrawer.py +++ b/virtManager/autodrawer.py @@ -28,7 +28,7 @@ from gi.repository import GLib from gi.repository import Gtk # pylint: enable=E0611 -from virtManager import uihelpers +from virtManager import uiutil # pylint: disable=E1101 # pylint can't detect functions we inheirit from Gtk, ex: @@ -92,10 +92,10 @@ class OverBox(Gtk.Box): actual_min = self._get_actual_min() if self.overWidget: - expand = uihelpers.child_get_property(self, self.overWidget, + expand = uiutil.child_get_property(self, self.overWidget, "expand") - fill = uihelpers.child_get_property(self, self.overWidget, "fill") - padding = uihelpers.child_get_property(self, self.overWidget, + fill = uiutil.child_get_property(self, self.overWidget, "fill") + padding = uiutil.child_get_property(self, self.overWidget, "padding") if expand and fill: @@ -257,9 +257,9 @@ class OverBox(Gtk.Box): self.overWidth = over.width self.overHeight = over.height - expand = uihelpers.child_get_property(self, self.overWidget, "expand") - fill = uihelpers.child_get_property(self, self.overWidget, "fill") - padding = uihelpers.child_get_property(self, self.overWidget, "padding") + expand = uiutil.child_get_property(self, self.overWidget, "expand") + fill = uiutil.child_get_property(self, self.overWidget, "fill") + padding = uiutil.child_get_property(self, self.overWidget, "padding") if expand or fill: wpad = 0 diff --git a/virtManager/choosecd.py b/virtManager/choosecd.py index 735afee8..32ac204d 100644 --- a/virtManager/choosecd.py +++ b/virtManager/choosecd.py @@ -18,13 +18,13 @@ # MA 02110-1301 USA. # +import logging + # pylint: disable=E0611 from gi.repository import GObject # pylint: enable=E0611 -import logging - -import virtManager.uihelpers as uihelpers +from virtManager import sharedui from virtManager.baseclass import vmmGObjectUI from virtManager.mediadev import MEDIA_FLOPPY from virtManager.storagebrowse import vmmStorageBrowser @@ -103,7 +103,7 @@ class vmmChooseCD(vmmGObjectUI): idx = cd.get_active() model = cd.get_model() if idx != -1: - path = model[idx][uihelpers.OPTICAL_DEV_PATH] + path = model[idx][sharedui.OPTICAL_DEV_PATH] if path == "" or path is None: return self.err.val_err(_("Invalid Media Path"), @@ -123,7 +123,7 @@ class vmmChooseCD(vmmGObjectUI): if not res: return False - uihelpers.check_path_search_for_qemu(self.err, self.conn, path) + sharedui.check_path_search_for_qemu(self.err, self.conn, path) self.emit("cdrom-chosen", self.disk, path) self.close() @@ -149,8 +149,8 @@ class vmmChooseCD(vmmGObjectUI): warn = self.widget("cd-path-warn") error = self.conn.mediadev_error - uihelpers.build_mediadev_combo(widget) - uihelpers.populate_mediadev_combo(self.conn, widget, self.media_type) + sharedui.build_mediadev_combo(widget) + sharedui.populate_mediadev_combo(self.conn, widget, self.media_type) if error: warn.show() diff --git a/virtManager/create.py b/virtManager/create.py index cdc30ae4..da4802b8 100644 --- a/virtManager/create.py +++ b/virtManager/create.py @@ -31,7 +31,8 @@ from gi.repository import Gdk import virtinst from virtinst import util -from virtManager import uihelpers +from virtManager import sharedui +from virtManager import uiutil from virtManager.mediadev import MEDIA_CDROM from virtManager.baseclass import vmmGObjectUI from virtManager.asyncjob import vmmAsyncJob @@ -291,13 +292,13 @@ class vmmCreate(vmmGObjectUI): # Physical CD-ROM model cd_list = self.widget("install-local-cdrom-combo") - uihelpers.build_mediadev_combo(cd_list) + sharedui.build_mediadev_combo(cd_list) # Networking # [ interface type, device name, label, sensitive ] net_list = self.widget("config-netdev") bridge_box = self.widget("config-netdev-bridge-box") - uihelpers.build_network_list(net_list, bridge_box) + sharedui.build_network_list(net_list, bridge_box) # Archtecture # [value, label] @@ -327,7 +328,7 @@ class vmmCreate(vmmGObjectUI): # Sparse tooltip sparse_info = self.widget("config-storage-nosparse-info") - uihelpers.set_sparse_tooltip(sparse_info) + sharedui.set_sparse_tooltip(sparse_info) def reset_state(self, urihint=None): self.failed_guest = None @@ -398,7 +399,7 @@ class vmmCreate(vmmGObjectUI): # Storage label_widget = self.widget("phys-hd-label") label_widget.set_markup("") - uihelpers.update_host_space(self.conn, label_widget) + sharedui.update_host_space(self.conn, label_widget) self.widget("enable-storage").set_active(True) self.widget("config-storage-create").set_active(True) self.widget("config-storage-size").set_value(8) @@ -502,7 +503,7 @@ class vmmCreate(vmmGObjectUI): "microblaze" in self.capsguest.arch or "ppc" in self.capsguest.arch) self.widget("config-kernel-box").set_visible(show_kernel) - uihelpers.set_grid_row_visible(self.widget("config-dtb"), show_dtb) + uiutil.set_grid_row_visible(self.widget("config-dtb"), show_dtb) def set_conn_state(self): # Update all state that has some dependency on the current connection @@ -536,7 +537,7 @@ class vmmCreate(vmmGObjectUI): show_arch = (self.widget("config-hv").get_visible() or self.widget("config-arch").get_visible() or self.widget("config-machine").get_visible()) - uihelpers.set_grid_row_visible(self.widget("arch-expander"), show_arch) + uiutil.set_grid_row_visible(self.widget("arch-expander"), show_arch) if self.conn.is_xen(): if self.conn.caps.hw_virt_supported(): @@ -565,7 +566,7 @@ class vmmCreate(vmmGObjectUI): cdrom_list = self.widget("install-local-cdrom-combo") cdrom_warn = self.widget("install-local-cdrom-warn") - sigs = uihelpers.populate_mediadev_combo(self.conn, cdrom_list, + sigs = sharedui.populate_mediadev_combo(self.conn, cdrom_list, MEDIA_CDROM) self.conn_signals.extend(sigs) @@ -636,7 +637,7 @@ class vmmCreate(vmmGObjectUI): net_warn_box.hide() net_expander.set_expanded(False) - do_warn = uihelpers.populate_network_list(net_list, self.conn, False) + do_warn = sharedui.populate_network_list(net_list, self.conn, False) self.set_net_warn(self.conn.netdev_error or do_warn, self.conn.netdev_error, True) @@ -697,7 +698,7 @@ class vmmCreate(vmmGObjectUI): model.append([label, gtype]) show = bool(guests) - uihelpers.set_grid_row_visible(hv_list, show) + uiutil.set_grid_row_visible(hv_list, show) if show: hv_list.set_active(default) @@ -740,7 +741,7 @@ class vmmCreate(vmmGObjectUI): model.append([arch, pretty_arch(arch)]) show = not (len(archs) < 2) - uihelpers.set_grid_row_visible(arch_list, show) + uiutil.set_grid_row_visible(arch_list, show) arch_list.set_active(default) def populate_machine(self): @@ -778,7 +779,7 @@ class vmmCreate(vmmGObjectUI): model.append([m]) show = (len(machines) > 1) - uihelpers.set_grid_row_visible(lst, show) + uiutil.set_grid_row_visible(lst, show) if show: lst.set_active(default) else: @@ -1051,7 +1052,7 @@ class vmmCreate(vmmGObjectUI): idx = cd.get_active() model = cd.get_model() if idx != -1: - return model[idx][uihelpers.OPTICAL_DEV_PATH] + return model[idx][sharedui.OPTICAL_DEV_PATH] return None else: ret = self.widget("install-local-box").get_child().get_text() @@ -1100,7 +1101,7 @@ class vmmCreate(vmmGObjectUI): if disks: return disks[0].path - return uihelpers.get_default_path(self.conn, name) + return sharedui.get_default_path(self.conn, name) def is_default_storage(self): usedef = self.widget("config-storage-create").get_active() @@ -1109,7 +1110,7 @@ class vmmCreate(vmmGObjectUI): def get_storage_info(self): path = None - size = uihelpers.spin_get_helper(self.widget("config-storage-size")) + size = uiutil.spin_get_helper(self.widget("config-storage-size")) sparse = not self.widget("config-storage-nosparse").get_active() if self.get_config_install_page() == INSTALL_PAGE_IMPORT: @@ -1130,7 +1131,7 @@ class vmmCreate(vmmGObjectUI): bridge_ent = self.widget("config-netdev-bridge") macaddr = self.widget("config-macaddr").get_text() - net_type, net_src = uihelpers.get_network_selection(net_list, + net_type, net_src = sharedui.get_network_selection(net_list, bridge_ent) return net_type, net_src, macaddr.strip() @@ -1167,7 +1168,7 @@ class vmmCreate(vmmGObjectUI): machine = self.get_config_machine() show_dtb_virtio = (self.capsguest.arch == "armv7l" and machine in ["vexpress-a9", "vexpress-15"]) - uihelpers.set_grid_row_visible( + uiutil.set_grid_row_visible( self.widget("config-dtb-warn-virtio"), show_dtb_virtio) def netdev_changed(self, ignore): @@ -1734,7 +1735,7 @@ class vmmCreate(vmmGObjectUI): path = None if path: - uihelpers.check_path_search_for_qemu(self.err, self.conn, path) + sharedui.check_path_search_for_qemu(self.err, self.conn, path) # Validation passed, store the install path (if there is one) in # gconf @@ -1780,7 +1781,7 @@ class vmmCreate(vmmGObjectUI): # Make sure default pool is running if self.is_default_storage(): - ret = uihelpers.check_default_pool_active(self.err, self.conn) + ret = sharedui.check_default_pool_active(self.err, self.conn) if not ret: return False @@ -1791,7 +1792,7 @@ class vmmCreate(vmmGObjectUI): if self.is_default_storage(): # See if the ideal disk path (/default/pool/vmname.img) # exists, and if unused, prompt the use for using it - ideal = uihelpers.get_ideal_path(self.conn, + ideal = sharedui.get_ideal_path(self.conn, self.guest.name) do_exist = False ret = True @@ -1846,7 +1847,7 @@ class vmmCreate(vmmGObjectUI): if not res: return False - uihelpers.check_path_search_for_qemu(self.err, self.conn, disk.path) + sharedui.check_path_search_for_qemu(self.err, self.conn, disk.path) self.disk = disk self.guest.add_device(self.disk) @@ -1880,7 +1881,7 @@ class vmmCreate(vmmGObjectUI): _("Network device required for %s install.") % methname) - nic = uihelpers.validate_network(self.err, + nic = sharedui.validate_network(self.err, self.conn, nettype, devname, macaddr) if nic is False: return False diff --git a/virtManager/createinterface.py b/virtManager/createinterface.py index 809c7981..45c5abeb 100644 --- a/virtManager/createinterface.py +++ b/virtManager/createinterface.py @@ -27,7 +27,7 @@ import logging from virtinst import Interface, InterfaceProtocol -from virtManager import uihelpers +from virtManager import uiutil from virtManager.baseclass import vmmGObjectUI from virtManager.asyncjob import vmmAsyncJob @@ -181,7 +181,7 @@ class vmmCreateInterface(vmmGObjectUI): def build_interface_startmode_combo(combo): model = Gtk.ListStore(str) combo.set_model(model) - uihelpers.set_combo_text_column(combo, 0) + uiutil.set_combo_text_column(combo, 0) model.append(["none"]) model.append(["onboot"]) @@ -590,7 +590,7 @@ class vmmCreateInterface(vmmGObjectUI): iface = ifaces[0][INTERFACE_ROW_NAME] if itype == Interface.INTERFACE_TYPE_VLAN: - tag = uihelpers.spin_get_helper(self.widget("vlan-tag")) + tag = uiutil.spin_get_helper(self.widget("vlan-tag")) name = "%s.%s" % (iface, int(tag)) elif itype == Interface.INTERFACE_TYPE_ETHERNET: @@ -1079,7 +1079,7 @@ class vmmCreateInterface(vmmGObjectUI): def validate_vlan(self, iobj, ifaces): - idx = uihelpers.spin_get_helper(self.widget("vlan-tag")) + idx = uiutil.spin_get_helper(self.widget("vlan-tag")) iobj.tag = int(idx) return True diff --git a/virtManager/createnet.py b/virtManager/createnet.py index d092d9d1..2befb027 100644 --- a/virtManager/createnet.py +++ b/virtManager/createnet.py @@ -30,7 +30,7 @@ from gi.repository import Gdk from virtinst import Network -from virtManager import uihelpers +from virtManager import uiutil from virtManager.asyncjob import vmmAsyncJob from virtManager.baseclass import vmmGObjectUI @@ -506,27 +506,27 @@ class vmmCreateNetwork(vmmGObjectUI): enabled = self.get_config_routev4_enable() ntwk = self.widget("net-routev4-network") gway = self.widget("net-routev4-gateway") - uihelpers.set_grid_row_visible(ntwk, enabled) - uihelpers.set_grid_row_visible(gway, enabled) + uiutil.set_grid_row_visible(ntwk, enabled) + uiutil.set_grid_row_visible(gway, enabled) def change_routev6_enable(self, ignore): enabled = self.get_config_routev6_enable() ntwk = self.widget("net-routev6-network") gway = self.widget("net-routev6-gateway") - uihelpers.set_grid_row_visible(ntwk, enabled) - uihelpers.set_grid_row_visible(gway, enabled) + uiutil.set_grid_row_visible(ntwk, enabled) + uiutil.set_grid_row_visible(gway, enabled) def change_dhcpv4_enable(self, ignore): enabled = self.get_config_dhcpv4_enable() start = self.widget("net-dhcpv4-start") end = self.widget("net-dhcpv4-end") - uihelpers.set_grid_row_visible(start, enabled) - uihelpers.set_grid_row_visible(end, enabled) + uiutil.set_grid_row_visible(start, enabled) + uiutil.set_grid_row_visible(end, enabled) def change_dhcpv6_enable(self, ignore): enabled = self.get_config_dhcpv6_enable() start = self.widget("net-dhcpv6-start") end = self.widget("net-dhcpv6-end") - uihelpers.set_grid_row_visible(start, enabled) - uihelpers.set_grid_row_visible(end, enabled) + uiutil.set_grid_row_visible(start, enabled) + uiutil.set_grid_row_visible(end, enabled) def change_dhcpv4_start(self, src): start = self.get_config_dhcpv4_start() diff --git a/virtManager/createpool.py b/virtManager/createpool.py index 67f50176..f4c7ed7c 100644 --- a/virtManager/createpool.py +++ b/virtManager/createpool.py @@ -27,7 +27,7 @@ import logging from virtManager.baseclass import vmmGObjectUI from virtManager.asyncjob import vmmAsyncJob -from virtManager import uihelpers +from virtManager import uiutil from virtinst import StoragePool @@ -255,7 +255,7 @@ class vmmCreatePool(vmmGObjectUI): def show_options_by_pool(self): def show_row(base, do_show): widget = self.widget(base + "-label") - uihelpers.set_grid_row_visible(widget, do_show) + uiutil.set_grid_row_visible(widget, do_show) src = self._pool.supports_property("source_path") src_b = src and not self.conn.is_remote() diff --git a/virtManager/createvol.py b/virtManager/createvol.py index ad8f98cc..b0559bd9 100644 --- a/virtManager/createvol.py +++ b/virtManager/createvol.py @@ -26,7 +26,7 @@ from gi.repository import Gtk from gi.repository import Gdk # pylint: enable=E0611 -from virtManager import uihelpers +from virtManager import uiutil from virtManager.baseclass import vmmGObjectUI from virtManager.asyncjob import vmmAsyncJob @@ -147,7 +147,7 @@ class vmmCreateVolume(vmmGObjectUI): def _show_alloc(self, *args, **kwargs): ignore = args ignore = kwargs - uihelpers.set_grid_row_visible( + uiutil.set_grid_row_visible( self.widget("vol-allocation"), self._can_alloc()) def _can_backing(self): @@ -157,7 +157,7 @@ class vmmCreateVolume(vmmGObjectUI): return True return False def _show_backing(self): - uihelpers.set_grid_row_visible( + uiutil.set_grid_row_visible( self.widget("backing-expander"), self._can_backing()) def reset_state(self): @@ -169,7 +169,7 @@ class vmmCreateVolume(vmmGObjectUI): self.populate_vol_format() hasformat = bool(len(self.vol.list_formats())) - uihelpers.set_grid_row_visible(self.widget("vol-format"), hasformat) + uiutil.set_grid_row_visible(self.widget("vol-format"), hasformat) if hasformat: # Select the default storage format self.widget("vol-format").set_active(0) diff --git a/virtManager/delete.py b/virtManager/delete.py index 5283a1e8..be33b453 100644 --- a/virtManager/delete.py +++ b/virtManager/delete.py @@ -33,7 +33,7 @@ from virtinst import util from virtManager.asyncjob import vmmAsyncJob from virtManager.baseclass import vmmGObjectUI -from virtManager import uihelpers +from virtManager import uiutil STORAGE_ROW_CONFIRM = 0 STORAGE_ROW_CANT_DELETE = 1 @@ -97,7 +97,7 @@ class vmmDeleteDialog(vmmGObjectUI): # Show warning message if VM is running vm_active = self.vm.is_active() - uihelpers.set_grid_row_visible( + uiutil.set_grid_row_visible( self.widget("delete-warn-running-vm-box"), vm_active) # Disable storage removal by default @@ -109,7 +109,7 @@ class vmmDeleteDialog(vmmGObjectUI): def toggle_remove_storage(self, src): dodel = src.get_active() - uihelpers.set_grid_row_visible( + uiutil.set_grid_row_visible( self.widget("delete-storage-scroll"), dodel) def get_config_format(self): diff --git a/virtManager/details.py b/virtManager/details.py index bcdfa380..312e1d47 100644 --- a/virtManager/details.py +++ b/virtManager/details.py @@ -29,7 +29,8 @@ from gi.repository import Gdk import libvirt -from virtManager import uihelpers +from virtManager import sharedui +from virtManager import uiutil from virtManager.storagebrowse import vmmStorageBrowser from virtManager.baseclass import vmmGObjectUI from virtManager.addhardware import vmmAddHardware @@ -641,14 +642,14 @@ class vmmDetails(vmmGObjectUI): def init_menus(self): # Virtual Machine menu - menu = uihelpers.VMShutdownMenu(self, lambda: self.vm) + menu = sharedui.VMShutdownMenu(self, lambda: self.vm) self.widget("control-shutdown").set_menu(menu) self.widget("control-shutdown").set_icon_name("system-shutdown") topmenu = self.widget("details-vm-menu") submenu = topmenu.get_submenu() - newmenu = uihelpers.VMActionMenu(self, lambda: self.vm, - show_open=False) + newmenu = sharedui.VMActionMenu(self, lambda: self.vm, + show_open=False) for child in submenu.get_children(): submenu.remove(child) newmenu.add(child) # pylint: disable=E1101 @@ -759,7 +760,7 @@ class vmmDetails(vmmGObjectUI): machtype_model.set_sort_column_id(0, Gtk.SortType.ASCENDING) show_machine = (arch not in ["i686", "x86_64"]) - uihelpers.set_grid_row_visible(self.widget("machine-type"), + uiutil.set_grid_row_visible(self.widget("machine-type"), show_machine) if show_machine: @@ -936,7 +937,7 @@ class vmmDetails(vmmGObjectUI): net_bridge = self.widget("network-bridge-box") source_mode_combo = self.widget("network-source-mode") vport_expander = self.widget("vport-expander") - uihelpers.build_network_list(net_source, net_bridge, + sharedui.build_network_list(net_source, net_bridge, source_mode_combo, vport_expander) # source mode @@ -951,7 +952,7 @@ class vmmDetails(vmmGObjectUI): gfx_type = self.widget("gfx-type") model = Gtk.ListStore(str, str) gfx_type.set_model(model) - uihelpers.set_combo_text_column(gfx_type, 1) + uiutil.set_combo_text_column(gfx_type, 1) model.append([virtinst.VirtualGraphics.TYPE_VNC, "VNC"]) model.append([virtinst.VirtualGraphics.TYPE_SPICE, "Spice"]) gfx_type.set_active(-1) @@ -989,7 +990,7 @@ class vmmDetails(vmmGObjectUI): combo = self.widget("controller-model") model = Gtk.ListStore(str, str) combo.set_model(model) - uihelpers.set_combo_text_column(combo, 1) + uiutil.set_combo_text_column(combo, 1) combo.set_active(-1) @@ -1593,9 +1594,9 @@ class vmmDetails(vmmGObjectUI): # Memory def config_get_maxmem(self): - return uihelpers.spin_get_helper(self.widget("config-maxmem")) + return uiutil.spin_get_helper(self.widget("config-maxmem")) def config_get_memory(self): - return uihelpers.spin_get_helper(self.widget("config-memory")) + return uiutil.spin_get_helper(self.widget("config-memory")) def config_maxmem_changed(self, src_ignore): self.enable_apply(EDIT_MEM) @@ -1619,9 +1620,9 @@ class vmmDetails(vmmGObjectUI): # VCPUS def config_get_vcpus(self): - return uihelpers.spin_get_helper(self.widget("config-vcpus")) + return uiutil.spin_get_helper(self.widget("config-vcpus")) def config_get_maxvcpus(self): - return uihelpers.spin_get_helper(self.widget("config-maxvcpus")) + return uiutil.spin_get_helper(self.widget("config-maxvcpus")) def config_vcpupin_generate(self, ignore): try: @@ -2140,8 +2141,8 @@ class vmmDetails(vmmGObjectUI): mode = None net_list = self.widget("network-source") net_bridge = self.widget("network-bridge") - nettype, source = uihelpers.get_network_selection(net_list, - net_bridge) + nettype, source = sharedui.get_network_selection(net_list, + net_bridge) if nettype == "direct": mode = self.get_combo_entry("network-source-mode") @@ -2417,7 +2418,7 @@ class vmmDetails(vmmGObjectUI): def refresh_inspection_page(self): inspection_supported = self.config.support_inspection - uihelpers.set_grid_row_visible(self.widget("details-overview-error"), + uiutil.set_grid_row_visible(self.widget("details-overview-error"), self.vm.inspection.error) if self.vm.inspection.error: msg = _("Error while inspecting the guest configuration") @@ -2650,7 +2651,7 @@ class vmmDetails(vmmGObjectUI): self.widget("disk-readonly").set_sensitive(not is_cdrom) self.widget("disk-shareable").set_active(share) self.widget("disk-removable").set_active(removable) - uihelpers.set_grid_row_visible(self.widget("disk-removable"), + uiutil.set_grid_row_visible(self.widget("disk-removable"), can_set_removable) self.widget("disk-size").set_text(size) self.set_combo_entry("disk-cache", cache) @@ -2704,10 +2705,10 @@ class vmmDetails(vmmGObjectUI): if source and source in name_dict: netobj = name_dict[source] - desc = uihelpers.pretty_network_desc(nettype, source, netobj) + desc = sharedui.pretty_network_desc(nettype, source, netobj) self.widget("network-mac-address").set_text(net.macaddr) - uihelpers.populate_network_list( + sharedui.populate_network_list( self.widget("network-source"), self.conn) self.widget("network-source").set_active(-1) @@ -2731,7 +2732,7 @@ class vmmDetails(vmmGObjectUI): comparefunc=compare_network) is_direct = (nettype == "direct") - uihelpers.set_grid_row_visible(self.widget("network-source-mode"), + uiutil.set_grid_row_visible(self.widget("network-source-mode"), is_direct) self.widget("vport-expander").set_visible(is_direct) @@ -2793,7 +2794,7 @@ class vmmDetails(vmmGObjectUI): table.foreach(lambda w, ignore: w.hide(), ()) def show_row(name): - uihelpers.set_grid_row_visible(self.widget(name), True) + uiutil.set_grid_row_visible(self.widget(name), True) def port_to_string(port): if port is None: @@ -2889,7 +2890,7 @@ class vmmDetails(vmmGObjectUI): if not val and doshow: val = getattr(tpmdev, param) - uihelpers.set_grid_row_visible(self.widget(widgetname), doshow) + uiutil.set_grid_row_visible(self.widget(widgetname), doshow) self.widget(widgetname).set_text(val or "-") dev_type = tpmdev.type @@ -2912,7 +2913,7 @@ class vmmDetails(vmmGObjectUI): propername = param.upper() + "_DEFAULT" val = getattr(virtinst.VirtualPanicDevice, propername, "-").upper() - uihelpers.set_grid_row_visible(self.widget(widgetname), True) + uiutil.set_grid_row_visible(self.widget(widgetname), True) self.widget(widgetname).set_text(val or "-") ptyp = virtinst.VirtualPanicDevice.get_pretty_type(dev.type) @@ -2940,7 +2941,7 @@ class vmmDetails(vmmGObjectUI): } def set_visible(widget, v): - uihelpers.set_grid_row_visible(self.widget(widget), v) + uiutil.set_grid_row_visible(self.widget(widget), v) is_egd = dev.type == VirtualRNGDevice.TYPE_EGD udp = dev.backend_type == VirtualRNGDevice.BACKEND_TYPE_UDP @@ -2989,7 +2990,7 @@ class vmmDetails(vmmGObjectUI): if not val and doshow: val = getattr(chardev, param) - uihelpers.set_grid_row_visible(self.widget(widgetname), doshow) + uiutil.set_grid_row_visible(self.widget(widgetname), doshow) self.widget(widgetname).set_text(val or "-") def build_host_str(base): @@ -3103,7 +3104,7 @@ class vmmDetails(vmmGObjectUI): self.widget("controller-type").set_text(type_label) combo = self.widget("controller-model") - uihelpers.set_grid_row_visible(combo, True) + uiutil.set_grid_row_visible(combo, True) model = combo.get_model() model.clear() diff --git a/virtManager/fsdetails.py b/virtManager/fsdetails.py index 2c0f3b95..e3751afa 100644 --- a/virtManager/fsdetails.py +++ b/virtManager/fsdetails.py @@ -26,7 +26,7 @@ from gi.repository import GObject from virtinst import VirtualFilesystem, StorageVolume from virtinst import util -from virtManager import uihelpers +from virtManager import uiutil from virtManager.baseclass import vmmGObjectUI from virtManager.storagebrowse import vmmStorageBrowser @@ -250,21 +250,21 @@ class vmmFSDetails(vmmGObjectUI): show_mode = bool(ismount and (fsdriver == VirtualFilesystem.DRIVER_PATH or fsdriver == VirtualFilesystem.DRIVER_DEFAULT)) - uihelpers.set_grid_row_visible(self.widget("fs-mode-box"), show_mode) + uiutil.set_grid_row_visible(self.widget("fs-mode-box"), show_mode) show_wrpol = bool(ismount and fsdriver and (fsdriver == VirtualFilesystem.DRIVER_PATH or fsdriver == VirtualFilesystem.DRIVER_HANDLE)) - uihelpers.set_grid_row_visible(self.widget("fs-wrpolicy-box"), + uiutil.set_grid_row_visible(self.widget("fs-wrpolicy-box"), show_wrpol) show_ram_source = fstype == VirtualFilesystem.TYPE_RAM - uihelpers.set_grid_row_visible(self.widget("fs-ram-source-box"), show_ram_source) - uihelpers.set_grid_row_visible(self.widget("fs-source-box"), not show_ram_source) + uiutil.set_grid_row_visible(self.widget("fs-ram-source-box"), show_ram_source) + uiutil.set_grid_row_visible(self.widget("fs-source-box"), not show_ram_source) show_format = bool( fsdriver == VirtualFilesystem.DRIVER_NBD) - uihelpers.set_grid_row_visible(self.widget("fs-format-box"), show_format) + uiutil.set_grid_row_visible(self.widget("fs-format-box"), show_format) self.show_pair_combo("fs-format", True) show_mode_combo = False @@ -292,7 +292,7 @@ class vmmFSDetails(vmmGObjectUI): conn = self.conn.get_backend() source = self.widget("fs-source").get_text() target = self.widget("fs-target").get_text() - usage = uihelpers.spin_get_helper(self.widget("fs-ram-source-spin")) + usage = uiutil.spin_get_helper(self.widget("fs-ram-source-spin")) mode = self.get_config_fs_mode() fstype = self.get_config_fs_type() readonly = self.get_config_fs_readonly() diff --git a/virtManager/host.py b/virtManager/host.py index ea5b2372..eb3d000a 100644 --- a/virtManager/host.py +++ b/virtManager/host.py @@ -30,7 +30,7 @@ from virtinst import VirtualDisk from virtinst import StoragePool from virtinst import Interface -from virtManager import uihelpers +from virtManager import uiutil from virtManager.asyncjob import vmmAsyncJob from virtManager.connection import vmmConnection from virtManager.createnet import vmmCreateNetwork @@ -582,7 +582,7 @@ class vmmHost(vmmGObjectUI): self.widget("net-ipv4-dhcp-range").set_text(dhcpstr) self.widget("net-ipv4-network").set_text(netstr) - uihelpers.set_grid_row_visible( + uiutil.set_grid_row_visible( self.widget("net-ipv4-route"), bool(routevia)) if routevia: routevia = routeaddr + ", gateway=" + routevia @@ -613,7 +613,7 @@ class vmmHost(vmmGObjectUI): self.widget("net-ipv6-dhcp-range").set_text(dhcpstr) self.widget("net-ipv6-network").set_text(netstr or "") - uihelpers.set_grid_row_visible( + uiutil.set_grid_row_visible( self.widget("net-ipv6-route"), bool(routevia)) if routevia: routevia = routeaddr + ", gateway=" + routevia @@ -627,7 +627,7 @@ class vmmHost(vmmGObjectUI): self.widget("net-name").set_editable(not active) self.widget("net-device").set_text(net.get_bridge_device() or "") self.widget("net-name-domain").set_text(net.get_name_domain() or "") - uihelpers.set_grid_row_visible(self.widget("net-name-domain"), + uiutil.set_grid_row_visible(self.widget("net-name-domain"), bool(net.get_name_domain())) state = active and _("Active") or _("Inactive") @@ -690,7 +690,7 @@ class vmmHost(vmmGObjectUI): Gtk.IconSize.LARGE_TOOLBAR, bool(net.is_active())]) - uihelpers.set_row_selection(net_list, + uiutil.set_row_selection(net_list, curnet and curnet.get_uuid() or None) @@ -1240,7 +1240,7 @@ class vmmHost(vmmGObjectUI): Gtk.IconSize.LARGE_TOOLBAR, bool(iface.is_active())]) - uihelpers.set_row_selection(iface_list, + uiutil.set_row_selection(iface_list, curiface and curiface.get_name() or None) def populate_interface_children(self): @@ -1303,7 +1303,7 @@ def populate_storage_pools(pool_list, conn, curpool): model.append([uuid, label, pool.is_active(), per]) pool_list.set_model(model) - uihelpers.set_row_selection(pool_list, + uiutil.set_row_selection(pool_list, curpool and curpool.get_uuid() or None) diff --git a/virtManager/manager.py b/virtManager/manager.py index 85e943c5..022c87f3 100644 --- a/virtManager/manager.py +++ b/virtManager/manager.py @@ -29,7 +29,8 @@ from gi.repository import GdkPixbuf from virtinst import util -from virtManager import uihelpers +from virtManager import sharedui +from virtManager import uiutil from virtManager.connection import vmmConnection from virtManager.baseclass import vmmGObjectUI from virtManager.graphwidgets import CellRendererSparkline @@ -125,7 +126,7 @@ class vmmManager(vmmGObjectUI): self.topwin.set_default_size(w or 550, h or 550) self.prev_position = None - self.vmmenu = uihelpers.VMActionMenu(self, self.current_vm) + self.vmmenu = sharedui.VMActionMenu(self, self.current_vm) self.connmenu = Gtk.Menu() self.connmenu_items = {} @@ -296,7 +297,7 @@ class vmmManager(vmmGObjectUI): self.widget("vm-new").set_icon_name("vm_new") self.widget("vm-open").set_icon_name("icon_console") - menu = uihelpers.VMShutdownMenu(self, self.current_vm) + menu = sharedui.VMShutdownMenu(self, self.current_vm) self.widget("vm-shutdown").set_icon_name("system-shutdown") self.widget("vm-shutdown").set_menu(menu) @@ -786,7 +787,7 @@ class vmmManager(vmmGObjectUI): row[ROW_MARKUP] = self._build_vm_markup(name, status) desc = vm.get_description() - if not uihelpers.can_set_row_none: + if not uiutil.can_set_row_none: desc = desc or "" row[ROW_HINT] = util.xml_escape(desc) except libvirt.libvirtError, e: @@ -823,7 +824,7 @@ class vmmManager(vmmGObjectUI): return new_icon = _get_inspection_icon_pixbuf(vm, 16, 16) - if not uihelpers.can_set_row_none: + if not uiutil.can_set_row_none: new_icon = new_icon or "" row[ROW_INSPECTION_OS_ICON] = new_icon diff --git a/virtManager/preferences.py b/virtManager/preferences.py index b28d523a..fe57b1de 100644 --- a/virtManager/preferences.py +++ b/virtManager/preferences.py @@ -25,7 +25,7 @@ from gi.repository import Gtk from gi.repository import Gdk # pylint: enable=E0611 -from virtManager import uihelpers +from virtManager import uiutil from virtManager.baseclass import vmmGObjectUI @@ -102,7 +102,7 @@ class vmmPreferences(vmmGObjectUI): [2, _("Always")]]: model.append(row) combo.set_model(model) - uihelpers.set_combo_text_column(combo, 1) + uiutil.set_combo_text_column(combo, 1) combo = self.widget("prefs-graphics-type") # [gsettings value, string] @@ -112,7 +112,7 @@ class vmmPreferences(vmmGObjectUI): ["vnc", "VNC"], ["spice", "Spice"]]: model.append(row) combo.set_model(model) - uihelpers.set_combo_text_column(combo, 1) + uiutil.set_combo_text_column(combo, 1) combo = self.widget("prefs-storage-format") # [gsettings value, string] @@ -123,7 +123,7 @@ class vmmPreferences(vmmGObjectUI): ["qcow2", "QCOW2"]]: model.append(row) combo.set_model(model) - uihelpers.set_combo_text_column(combo, 1) + uiutil.set_combo_text_column(combo, 1) combo = self.widget("prefs-cpu-default") # [gsettings value, string] @@ -135,7 +135,7 @@ class vmmPreferences(vmmGObjectUI): ["host-model", _("Copy host CPU definition")]]: model.append(row) combo.set_model(model) - uihelpers.set_combo_text_column(combo, 1) + uiutil.set_combo_text_column(combo, 1) ######################### @@ -156,7 +156,7 @@ class vmmPreferences(vmmGObjectUI): def refresh_console_scaling(self): combo = self.widget("prefs-console-scaling") val = self.config.get_console_scaling() - uihelpers.set_row_selection(combo, val) + uiutil.set_row_selection(combo, val) def refresh_new_vm_sound(self): self.widget("prefs-new-vm-sound").set_active( @@ -164,15 +164,15 @@ class vmmPreferences(vmmGObjectUI): def refresh_graphics_type(self): combo = self.widget("prefs-graphics-type") gtype = self.config.get_graphics_type(raw=True) - uihelpers.set_row_selection(combo, gtype) + uiutil.set_row_selection(combo, gtype) def refresh_storage_format(self): combo = self.widget("prefs-storage-format") val = self.config.get_default_storage_format(raw=True) - uihelpers.set_row_selection(combo, val) + uiutil.set_row_selection(combo, val) def refresh_cpu_default(self): combo = self.widget("prefs-cpu-default") val = self.config.get_default_cpu_setting(raw=True) - uihelpers.set_row_selection(combo, val) + uiutil.set_row_selection(combo, val) def refresh_disk_poll(self): self.widget("prefs-stats-enable-disk").set_active( diff --git a/virtManager/uihelpers.py b/virtManager/sharedui.py index 298ae965..dec2c607 100644 --- a/virtManager/uihelpers.py +++ b/virtManager/sharedui.py @@ -24,26 +24,12 @@ import statvfs import pwd # pylint: disable=E0611 -from gi.repository import GObject from gi.repository import Gtk # pylint: enable=E0611 import virtinst from virtManager import config - -OPTICAL_DEV_PATH = 0 -OPTICAL_LABEL = 1 -OPTICAL_IS_MEDIA_PRESENT = 2 -OPTICAL_DEV_KEY = 3 -OPTICAL_MEDIA_KEY = 4 -OPTICAL_IS_VALID = 5 - -try: - import gi - gi.check_version("3.7.4") - can_set_row_none = True -except (ValueError, AttributeError): - can_set_row_none = False +from virtManager import uiutil ############################################################ @@ -255,11 +241,11 @@ def _net_list_changed(net_list, bridge_box, if source_mode_combo is not None: doshow = (row[0] == virtinst.VirtualNetworkInterface.TYPE_DIRECT) - set_grid_row_visible(source_mode_combo, doshow) + uiutil.set_grid_row_visible(source_mode_combo, doshow) vport_expander.set_visible(doshow) show_bridge = row[5] - set_grid_row_visible(bridge_box, show_bridge) + uiutil.set_grid_row_visible(bridge_box, show_bridge) def pretty_network_desc(nettype, source=None, netobj=None): @@ -538,6 +524,14 @@ def validate_network(err, conn, nettype, devname, macaddr, model=None): # Populate media widget (choosecd, create) # ############################################ +OPTICAL_DEV_PATH = 0 +OPTICAL_LABEL = 1 +OPTICAL_IS_MEDIA_PRESENT = 2 +OPTICAL_DEV_KEY = 3 +OPTICAL_MEDIA_KEY = 4 +OPTICAL_IS_VALID = 5 + + def _set_mediadev_default(model): if len(model) == 0: model.append([None, _("No device present"), False, None, None, False]) @@ -796,95 +790,3 @@ class VMActionMenu(_VMMenu): for child in self.get_children(): if getattr(child, "vmm_widget_name", None) == "run": child.get_child().set_label(text) - - - - -################ -# Misc helpers # -################ - -def set_combo_text_column(combo, col): - if combo.get_has_entry(): - combo.set_entry_text_column(col) - else: - text = Gtk.CellRendererText() - combo.pack_start(text, True) - combo.add_attribute(text, 'text', col) - - -def spin_get_helper(widget): - adj = widget.get_adjustment() - txt = widget.get_text() - - try: - return int(txt) - except: - return adj.get_value() - - -def get_list_selection(widget): - selection = widget.get_selection() - active = selection.get_selected() - - treestore, treeiter = active - if treeiter is not None: - return treestore[treeiter] - return None - - -def set_list_selection(widget, rownum): - path = str(rownum) - selection = widget.get_selection() - - selection.unselect_all() - widget.set_cursor(path) - selection.select_path(path) - - -def set_row_selection(listwidget, prevkey): - model = listwidget.get_model() - _iter = None - if prevkey: - for row in model: - if row[0] == prevkey: - _iter = row.iter - break - if not _iter: - _iter = model.get_iter_first() - - if hasattr(listwidget, "get_selection"): - selection = listwidget.get_selection() - cb = selection.select_iter - else: - selection = listwidget - cb = selection.set_active_iter - if _iter: - cb(_iter) - selection.emit("changed") - - -def child_get_property(parent, child, propname): - # Wrapper for child_get_property, which pygobject doesn't properly - # introspect - value = GObject.Value() - value.init(GObject.TYPE_INT) - parent.child_get_property(child, propname, value) - return value.get_int() - - -def set_grid_row_visible(child, visible): - # For the passed widget, find its parent GtkGrid, and hide/show all - # elements that are in the same row as it. Simplifies having to name - # every element in a row when we want to dynamically hide things - # based on UI interraction - - parent = child.get_parent() - if not type(parent) is Gtk.Grid: - raise RuntimeError("Programming error, parent must be grid, " - "not %s" % type(parent)) - - row = child_get_property(parent, child, "top-attach") - for child in parent.get_children(): - if child_get_property(parent, child, "top-attach") == row: - child.set_visible(visible) diff --git a/virtManager/snapshots.py b/virtManager/snapshots.py index 497795d1..1e8b4504 100644 --- a/virtManager/snapshots.py +++ b/virtManager/snapshots.py @@ -33,7 +33,7 @@ from gi.repository import Gtk from virtinst import DomainSnapshot from virtinst import util -from virtManager import uihelpers +from virtManager import uiutil from virtManager.baseclass import vmmGObjectUI from virtManager.asyncjob import vmmAsyncJob @@ -214,7 +214,7 @@ class vmmSnapshotPage(vmmGObjectUI): has_internal = False for snap in snapshots: desc = snap.get_xmlobj().description - if not uihelpers.can_set_row_none: + if not uiutil.can_set_row_none: desc = desc or "" name = snap.get_name() @@ -237,7 +237,7 @@ class vmmSnapshotPage(vmmGObjectUI): model.append([None, None, None, None, "2"]) select_name = select_name or (cursnap and cursnap.get_name() or None) - uihelpers.set_row_selection(self.widget("snapshot-list"), select_name) + uiutil.set_row_selection(self.widget("snapshot-list"), select_name) self._initial_populate = True def _make_screenshot_pixbuf(self, mime, sdata): @@ -307,7 +307,7 @@ class vmmSnapshotPage(vmmGObjectUI): self.widget("snapshot-status-icon").set_from_icon_name( icon, Gtk.IconSize.BUTTON) - uihelpers.set_grid_row_visible(self.widget("snapshot-mode"), + uiutil.set_grid_row_visible(self.widget("snapshot-mode"), is_external) if is_external: is_mem = xmlobj.memory_type == "external" @@ -396,7 +396,7 @@ class vmmSnapshotPage(vmmGObjectUI): self.vm.run_status_icon_name(), Gtk.IconSize.BUTTON) sn = self._get_screenshot() - uihelpers.set_grid_row_visible( + uiutil.set_grid_row_visible( self.widget("snapshot-new-screenshot"), bool(sn)) if sn: self.widget("snapshot-new-screenshot").set_from_pixbuf(sn) diff --git a/virtManager/storagebrowse.py b/virtManager/storagebrowse.py index 79e68c3d..fb56a711 100644 --- a/virtManager/storagebrowse.py +++ b/virtManager/storagebrowse.py @@ -28,7 +28,7 @@ from gi.repository import Gtk from virtManager import host from virtManager.createvol import vmmCreateVolume from virtManager.baseclass import vmmGObjectUI -from virtManager import uihelpers +from virtManager import uiutil class vmmStorageBrowser(vmmGObjectUI): @@ -180,7 +180,7 @@ class vmmStorageBrowser(vmmGObjectUI): if not self._first_run: self._first_run = True pool = self.conn.get_default_pool() - uihelpers.set_row_selection( + uiutil.set_row_selection( self.widget("pool-list"), pool and pool.get_uuid() or None) # Manually trigger vol_selected, so buttons are in the correct state self.vol_selected() @@ -216,7 +216,7 @@ class vmmStorageBrowser(vmmGObjectUI): return data["enable_create"] def current_pool(self): - row = uihelpers.get_list_selection(self.widget("pool-list")) + row = uiutil.get_list_selection(self.widget("pool-list")) if not row: return try: @@ -227,7 +227,7 @@ class vmmStorageBrowser(vmmGObjectUI): def current_vol_row(self): if not self.current_pool(): return - return uihelpers.get_list_selection(self.widget("vol-list")) + return uiutil.get_list_selection(self.widget("vol-list")) def current_vol(self): pool = self.current_pool() @@ -283,7 +283,7 @@ class vmmStorageBrowser(vmmGObjectUI): vol_list = self.widget("vol-list") def select_volume(model, path, it, volume_name): if model.get(it, 0)[0] == volume_name: - uihelpers.set_list_selection(vol_list, path) + uiutil.set_list_selection(vol_list, path) vol_list.get_model().foreach(select_volume, createvol.vol.name) diff --git a/virtManager/systray.py b/virtManager/systray.py index fc6a5232..724ec77a 100644 --- a/virtManager/systray.py +++ b/virtManager/systray.py @@ -25,7 +25,7 @@ from gi.repository import GObject from gi.repository import Gtk # pylint: enable=E0611 -from virtManager import uihelpers +from virtManager import sharedui from virtManager.baseclass import vmmGObject from virtManager.error import vmmErrorDialog @@ -303,7 +303,7 @@ class vmmSystray(vmmGObject): # Build VM list entry menu_item = build_image_menu_item(vm.get_name()) vm_mappings[uuid] = menu_item - vm_action_menu = uihelpers.VMActionMenu(self, lambda: vm) + vm_action_menu = sharedui.VMActionMenu(self, lambda: vm) menu_item.set_submenu(vm_action_menu) self.vm_action_dict[uuid] = vm_action_menu diff --git a/virtManager/uiutil.py b/virtManager/uiutil.py new file mode 100644 index 00000000..0ca5baf4 --- /dev/null +++ b/virtManager/uiutil.py @@ -0,0 +1,117 @@ +# +# Copyright (C) 2009, 2013, 2014 Red Hat, Inc. +# Copyright (C) 2009 Cole Robinson <crobinso@redhat.com> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301 USA. +# + +# pylint: disable=E0611 +from gi.repository import GObject +from gi.repository import Gtk +# pylint: enable=E0611 + +try: + import gi + gi.check_version("3.7.4") + can_set_row_none = True +except (ValueError, AttributeError): + can_set_row_none = False + + +def set_combo_text_column(combo, col): + if combo.get_has_entry(): + combo.set_entry_text_column(col) + else: + text = Gtk.CellRendererText() + combo.pack_start(text, True) + combo.add_attribute(text, 'text', col) + + +def spin_get_helper(widget): + adj = widget.get_adjustment() + txt = widget.get_text() + + try: + return int(txt) + except: + return adj.get_value() + + +def get_list_selection(widget): + selection = widget.get_selection() + active = selection.get_selected() + + treestore, treeiter = active + if treeiter is not None: + return treestore[treeiter] + return None + + +def set_list_selection(widget, rownum): + path = str(rownum) + selection = widget.get_selection() + + selection.unselect_all() + widget.set_cursor(path) + selection.select_path(path) + + +def set_row_selection(listwidget, prevkey): + model = listwidget.get_model() + _iter = None + if prevkey: + for row in model: + if row[0] == prevkey: + _iter = row.iter + break + if not _iter: + _iter = model.get_iter_first() + + if hasattr(listwidget, "get_selection"): + selection = listwidget.get_selection() + cb = selection.select_iter + else: + selection = listwidget + cb = selection.set_active_iter + if _iter: + cb(_iter) + selection.emit("changed") + + +def child_get_property(parent, child, propname): + # Wrapper for child_get_property, which pygobject doesn't properly + # introspect + value = GObject.Value() + value.init(GObject.TYPE_INT) + parent.child_get_property(child, propname, value) + return value.get_int() + + +def set_grid_row_visible(child, visible): + # For the passed widget, find its parent GtkGrid, and hide/show all + # elements that are in the same row as it. Simplifies having to name + # every element in a row when we want to dynamically hide things + # based on UI interraction + + parent = child.get_parent() + if not type(parent) is Gtk.Grid: + raise RuntimeError("Programming error, parent must be grid, " + "not %s" % type(parent)) + + row = child_get_property(parent, child, "top-attach") + for child in parent.get_children(): + if child_get_property(parent, child, "top-attach") == row: + child.set_visible(visible) |