diff options
author | Cole Robinson <crobinso@redhat.com> | 2014-01-26 18:15:50 -0500 |
---|---|---|
committer | Cole Robinson <crobinso@redhat.com> | 2014-01-26 18:15:50 -0500 |
commit | 708a2737cfd34f32c912ca3aaf2a29283e3a05c3 (patch) | |
tree | 38ec9321be6227fb2aea90486907449cf4079916 | |
parent | 2a34b353da1fd9750718605c240b6f3fbd74b0f0 (diff) | |
download | virt-manager-708a2737cfd34f32c912ca3aaf2a29283e3a05c3.tar.gz |
Split uihelpers into sharedui and uiutil
Reserve uiutil for the little gtk helper functions, rest goes into shared
UI (which all should probably be factored into their own files but thats
a task for another day)
-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) |