Daniel P. Berrange wrote: > On Tue, Jan 20, 2009 at 05:41:48PM -0500, Cole Robinson wrote: >> The attached patch adds support for listing, viewing details of, and >> removing VM 'hostdev' devices. libvirt currently supports usb and pci >> host devices, so I tried to tackle all the variants for each. Some >> example screeenshots: >> >> http://fedorapeople.org/~crobinso/virt-manager/vmm-show-hostdev1.png >> http://fedorapeople.org/~crobinso/virt-manager/vmm-show-hostdev2.png >> >> A couple particulars: >> >> - There is no icon for a 'hostdev' in the VM's hardware list. We've been >> stretching use of gtk stock icons pretty thin, and there really isn't >> anything available that makes sense. This will be addressed when we >> integrate custom icons (next release). >> >> - The parameter differences between PCI, USB by vendor/product, and USB >> by bus/device number are pretty large. Rather than have 10 different GUI >> fields, populating only what is appropriate and hiding the others, I >> just generate a single line listing for the device details section (ex. >> "Bus: 001, Device: 002". This is shown in the screenshots. It's a bit >> uglier this way, but much simpler, and conveys all the same information. > > I'd just use the formatted address syntax shown by lspci/lsusb, eg > > USB 001:002 > PCI 0000:01:3f.0 > > Given the PCI / USB address you ought to be able to use the host > device enumeration patches to find the matching device on the host. > Once you have that you get the friendly Vendor + Product name > which would be more useful to display > Updated patch attached, addressing the above comment. New screenshots say it all: http://fedorapeople.org/~crobinso/virt-manager/vmm-show-hostdev1v2.png http://fedorapeople.org/~crobinso/virt-manager/vmm-show-hostdev2v2.png Thanks, Cole
# HG changeset patch # User Cole Robinson <crobinso@xxxxxxxxxx> # Date 1232551745 18000 # Node ID 194b588a02b22781dbf88271c6e285a6e00340bc # Parent 5314ba956ebebb21cfeb17efcffc2aafc7325840 List, display info about, and enable removing VM host devices. diff -r 5314ba956ebe -r 194b588a02b2 src/virtManager/details.py --- a/src/virtManager/details.py Mon Jan 19 11:07:56 2009 -0500 +++ b/src/virtManager/details.py Wed Jan 21 10:29:05 2009 -0500 @@ -57,6 +57,7 @@ HW_LIST_TYPE_GRAPHICS = 6 HW_LIST_TYPE_SOUND = 7 HW_LIST_TYPE_CHAR = 8 +HW_LIST_TYPE_HOSTDEV = 9 # Console pages PAGE_UNAVAILABLE = 0 @@ -293,6 +294,7 @@ "on_config_graphics_remove_clicked": self.remove_xml_dev, "on_config_sound_remove_clicked": self.remove_xml_dev, "on_config_char_remove_clicked": self.remove_xml_dev, + "on_config_hostdev_remove_clicked": self.remove_xml_dev, "on_add_hardware_button_clicked": self.add_hardware, "on_details_menu_view_fullscreen_activate": self.toggle_fullscreen, @@ -610,6 +612,9 @@ elif pagetype == HW_LIST_TYPE_MEMORY: self.window.get_widget("config-memory-apply").set_sensitive(False) self.refresh_config_memory() + elif pagetype == HW_LIST_TYPE_BOOT: + self.refresh_boot_page() + self.window.get_widget("config-boot-options-apply").set_sensitive(False) elif pagetype == HW_LIST_TYPE_DISK: self.refresh_disk_page() elif pagetype == HW_LIST_TYPE_NIC: @@ -622,9 +627,8 @@ self.refresh_sound_page() elif pagetype == HW_LIST_TYPE_CHAR: self.refresh_char_page() - elif pagetype == HW_LIST_TYPE_BOOT: - self.refresh_boot_page() - self.window.get_widget("config-boot-options-apply").set_sensitive(False) + elif pagetype == HW_LIST_TYPE_HOSTDEV: + self.refresh_hostdev_page() else: pagenum = -1 @@ -822,6 +826,8 @@ self.refresh_sound_page() elif pagetype == HW_LIST_TYPE_CHAR: self.refresh_char_page() + elif pagetype == HW_LIST_TYPE_HOSTDEV: + self.refresh_hostdev_page() def refresh_summary(self): def _rx_tx_text(rx, tx, unit): @@ -1037,6 +1043,19 @@ self.window.get_widget("char-target-port").set_text(charinfo[3]) self.window.get_widget("char-source-path").set_text(charinfo[5] or "-") + def refresh_hostdev_page(self): + hostdevinfo = self.get_hw_selection(HW_LIST_COL_DEVICE) + if not hostdevinfo: + return + + devlabel = "<b>Physical %s Device</b>" % hostdevinfo[4].upper() + + self.window.get_widget("hostdev-title").set_markup(devlabel) + self.window.get_widget("hostdev-type").set_text(hostdevinfo[4]) + self.window.get_widget("hostdev-mode").set_text(hostdevinfo[3]) + self.window.get_widget("hostdev-source").set_text(hostdevinfo[5]) + + def refresh_boot_page(self): # Refresh autostart try: @@ -1512,6 +1531,7 @@ currentGraphics = {} currentSounds = {} currentChars = {} + currentHostdevs = {} def update_hwlist(hwtype, info): """Return (true if we updated an entry, @@ -1590,7 +1610,6 @@ if missing: hw_list_model.insert(insertAt, [_("Sound: %s" % soundinfo[2]), gtk.STOCK_MEDIA_PLAY, gtk.ICON_SIZE_LARGE_TOOLBAR, None, HW_LIST_TYPE_SOUND, soundinfo]) - # Populate list of char devices for charinfo in self.vm.get_char_devices(): currentChars[charinfo[2]] = 1 @@ -1604,6 +1623,15 @@ l += " %s" % charinfo[3] # Don't show port for console hw_list_model.insert(insertAt, [l, gtk.STOCK_CONNECT, gtk.ICON_SIZE_LARGE_TOOLBAR, None, HW_LIST_TYPE_CHAR, charinfo]) + # Populate host devices + for hostdevinfo in self.vm.get_hostdev_devices(): + currentHostdevs[hostdevinfo[2]] = 1 + missing, insertAt = update_hwlist(HW_LIST_TYPE_HOSTDEV, + hostdevinfo) + + if missing: + hw_list_model.insert(insertAt, [hostdevinfo[2], None, gtk.ICON_SIZE_LARGE_TOOLBAR, None, HW_LIST_TYPE_HOSTDEV, hostdevinfo]) + # Now remove any no longer current devs devs = range(len(hw_list_model)) @@ -1631,6 +1659,9 @@ elif row[HW_LIST_COL_TYPE] == HW_LIST_TYPE_CHAR and not \ currentChars.has_key(row[HW_LIST_COL_DEVICE][2]): removeIt = True + elif row[HW_LIST_COL_TYPE] == HW_LIST_TYPE_HOSTDEV and not \ + currentHostdevs.has_key(row[HW_LIST_COL_DEVICE][2]): + removeIt = True if removeIt: # Re-select the first row, if we're viewing the device diff -r 5314ba956ebe -r 194b588a02b2 src/virtManager/domain.py --- a/src/virtManager/domain.py Mon Jan 19 11:07:56 2009 -0500 +++ b/src/virtManager/domain.py Wed Jan 21 10:29:05 2009 -0500 @@ -805,6 +805,101 @@ return self._parse_device_xml(_parse_char_devs) + def get_hostdev_devices(self): + def _parse_hostdev_devs(ctx): + hostdevs = [] + devs = ctx.xpathEval("/domain/devices/hostdev") + + for dev in devs: + vendor = None + product = None + addrbus = None + addrdev = None + unique = {} + + # String shown in the devices details section + srclabel = "" + # String shown in the VMs hardware list + hwlabel = "" + + def dehex(val): + if val.startswith("0x"): + val = val[2:] + return val + + def safeint(val, fmt="%.3d"): + try: + int(val) + except: + return str(val) + return fmt % int(val) + + def set_uniq(baseent, propname, node): + val = node.prop(propname) + if not unique.has_key(baseent): + unique[baseent] = {} + unique[baseent][propname] = val + return val + + mode = dev.prop("mode") + typ = dev.prop("type") + unique["type"] = typ + + hwlabel = typ.upper() + srclabel = typ.upper() + + for node in dev.children: + if node.name == "source": + for child in node.children: + if child.name == "address": + addrbus = set_uniq("address", "bus", child) + + # For USB + addrdev = set_uniq("address", "device", child) + + # For PCI + addrdom = set_uniq("address", "domain", child) + addrslt = set_uniq("address", "slot", child) + addrfun = set_uniq("address", "function", child) + elif child.name == "vendor": + vendor = set_uniq("vendor", "id", child) + elif child.name == "product": + product = set_uniq("product", "id", child) + + if vendor and product: + # USB by vendor + product + devstr = " %s:%s" % (dehex(vendor), dehex(product)) + srclabel += devstr + hwlabel += devstr + + elif addrbus and addrdev: + # USB by bus + dev + srclabel += " Bus %s Device %s" % \ + (safeint(addrbus), safeint(addrdev)) + hwlabel += " %s:%s" % (safeint(addrbus), safeint(addrdev)) + + elif addrbus and addrslt and addrfun and addrdom: + # PCI by bus:slot:function + devstr = " %s:%s:%s.%s" % \ + (dehex(addrdom), dehex(addrbus), + dehex(addrslt), dehex(addrfun)) + srclabel += devstr + hwlabel += devstr + + else: + # If we can't determine source info, skip these + # device since we have no way to determine uniqueness + continue + + # [device type, unique, hwlist label, hostdev mode, + # hostdev type, source desc label] + hostdevs.append(["hostdev", unique, hwlabel, mode, typ, + srclabel]) + + return hostdevs + return self._parse_device_xml(_parse_hostdev_devs) + + def _parse_device_xml(self, parse_function): doc = None ctx = None @@ -883,6 +978,51 @@ cons_ret = ctx.xpathEval("/domain/devices/console[target/@port='%s']" % dev_id_info) if cons_ret and len(cons_ret) > 0: ret.append(cons_ret[0]) + + elif dev_type == "hostdev": + # This whole process is a little funky, since we need a decent + # amount of info to determine which specific hostdev to remove + + xmlbase = "/domain/devices/hostdev[@type='%s' and " % \ + dev_id_info["type"] + xpath = "" + ret = [] + + addr = dev_id_info.get("address") + vend = dev_id_info.get("vendor") + prod = dev_id_info.get("product") + if addr: + bus = addr.get("bus") + dev = addr.get("device") + slot = addr.get("slot") + funct = addr.get("function") + dom = addr.get("domain") + + if bus and dev: + # USB by bus and dev + xpath = (xmlbase + "source/address/@bus='%s' and " + "source/address/@device='%s']" % + (bus, dev)) + elif bus and slot and funct and dom: + # PCI by bus,slot,funct,dom + xpath = (xmlbase + "source/address/@bus='%s' and " + "source/address/@slot='%s' and " + "source/address/@function='%s' and " + "source/address/@domain='%s']" % + (bus, slot, funct, dom)) + + elif vend.get("id") and prod.get("id"): + # USB by vendor and product + xpath = (xmlbase + "source/vendor/@id='%s' and " + "source/product/@id='%s']" % + (vend.get("id"), prod.get("id"))) + + if xpath: + # Log this, since we could hit issues with unexpected + # xml parameters in the future + logging.debug("Hostdev xpath string: %s" % xpath) + ret = ctx.xpathEval(xpath) + else: raise RuntimeError, _("Unknown device type '%s'" % dev_type) diff -r 5314ba956ebe -r 194b588a02b2 src/vmm-details.glade --- a/src/vmm-details.glade Mon Jan 19 11:07:56 2009 -0500 +++ b/src/vmm-details.glade Wed Jan 21 10:29:05 2009 -0500 @@ -412,6 +412,7 @@ </widget> <packing> <property name="expand">False</property> + <property name="homogeneous">False</property> </packing> </child> <child> @@ -543,48 +544,6 @@ <placeholder/> </child> <child> - <widget class="GtkLabel" id="label436"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Password:</property> - </widget> - <packing> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkCheckButton" id="console-auth-remember"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Save this password in your keyring</property> - <property name="use_underline">True</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkEntry" id="console-auth-password"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="visibility">False</property> - <property name="invisible_char">*</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="y_options"></property> - </packing> - </child> - <child> <widget class="GtkButton" id="console-auth-login"> <property name="visible">True</property> <property name="can_focus">True</property> @@ -633,6 +592,48 @@ <property name="y_options"></property> </packing> </child> + <child> + <widget class="GtkEntry" id="console-auth-password"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="visibility">False</property> + <property name="invisible_char">*</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="console-auth-remember"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Save this password in your keyring</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label436"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Password:</property> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> </widget> <packing> <property name="position">2</property> @@ -724,34 +725,39 @@ <property name="column_spacing">3</property> <property name="row_spacing">3</property> <child> - <widget class="GtkEntry" id="overview-uuid"> + <widget class="GtkLabel" id="label44"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">False</property> - <accessibility> - <atkproperty name="AtkObject::accessible_name" translatable="yes">UUID Field</atkproperty> - </accessibility> + <property name="xalign">1</property> + <property name="label" translatable="yes">Status:</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkEntry" id="overview-name"> + <widget class="GtkLabel" id="label68"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">False</property> - <accessibility> - <atkproperty name="AtkObject::accessible_name" translatable="yes">Name Field</atkproperty> - </accessibility> + <property name="xalign">1</property> + <property name="label" translatable="yes">UUID:</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label43"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Name:</property> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> @@ -788,39 +794,34 @@ </packing> </child> <child> - <widget class="GtkLabel" id="label43"> + <widget class="GtkEntry" id="overview-name"> <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Name:</property> + <property name="can_focus">True</property> + <property name="editable">False</property> + <accessibility> + <atkproperty name="AtkObject::accessible_name" translatable="yes">Name Field</atkproperty> + </accessibility> </widget> <packing> - <property name="x_options">GTK_FILL</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="label68"> + <widget class="GtkEntry" id="overview-uuid"> <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">UUID:</property> + <property name="can_focus">True</property> + <property name="editable">False</property> + <accessibility> + <atkproperty name="AtkObject::accessible_name" translatable="yes">UUID Field</atkproperty> + </accessibility> </widget> <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> <property name="top_attach">1</property> <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label44"> - <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Status:</property> - </widget> - <packing> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> @@ -874,79 +875,17 @@ <placeholder/> </child> <child> - <widget class="GtkLabel" id="label45"> - <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">CPU usage:</property> - </widget> - <packing> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label46"> - <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Memory usage:</property> - </widget> - <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="overview-disk-usage-label"> - <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Disk I/O:</property> - </widget> - <packing> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="overview-network-traffic-label"> - <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Network I/O:</property> - </widget> - <packing> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="overview-cpu-usage-text"> + <widget class="GtkLabel" id="overview-network-traffic-text"> <property name="visible">True</property> <property name="xalign">0</property> - <property name="label">18%</property> + <property name="label">0 KBytes/s\n0KBytes/s</property> + <property name="use_markup">True</property> </widget> <packing> <property name="left_attach">2</property> <property name="right_attach">3</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="overview-memory-usage-text"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label">30 MB of 128 MB</property> - </widget> - <packing> - <property name="left_attach">2</property> - <property name="right_attach">3</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> @@ -968,21 +907,83 @@ </packing> </child> <child> - <widget class="GtkLabel" id="overview-network-traffic-text"> + <widget class="GtkLabel" id="overview-memory-usage-text"> <property name="visible">True</property> <property name="xalign">0</property> - <property name="label">0 KBytes/s\n0KBytes/s</property> - <property name="use_markup">True</property> + <property name="label">30 MB of 128 MB</property> </widget> <packing> <property name="left_attach">2</property> <property name="right_attach">3</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="overview-cpu-usage-text"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label">18%</property> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="overview-network-traffic-label"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Network I/O:</property> + </widget> + <packing> <property name="top_attach">3</property> <property name="bottom_attach">4</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> + <child> + <widget class="GtkLabel" id="overview-disk-usage-label"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Disk I/O:</property> + </widget> + <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label46"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Memory usage:</property> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label45"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">CPU usage:</property> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> </widget> </child> </widget> @@ -1144,23 +1145,21 @@ <property name="column_spacing">3</property> <property name="row_spacing">3</property> <child> - <widget class="GtkLabel" id="label347"> + <widget class="GtkSpinButton" id="config-vcpus"> <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Current allocation:</property> + <property name="can_focus">True</property> + <property name="adjustment">2 1 32 1 2 0</property> + <property name="climb_rate">1</property> + <property name="numeric">True</property> + <property name="update_policy">GTK_UPDATE_IF_VALID</property> + <accessibility> + <atkproperty name="AtkObject::accessible_name" translatable="yes">Virtual CPU Select</atkproperty> + </accessibility> + <signal name="changed" handler="on_config_vcpus_changed"/> </widget> <packing> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label333"> - <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Change allocation:</property> - </widget> - <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> <property name="top_attach">1</property> <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> @@ -1168,25 +1167,27 @@ </packing> </child> <child> - <widget class="GtkLabel" id="label335"> + <widget class="GtkLabel" id="state-vm-vcpus"> <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Maximum allocation:</property> + <property name="xalign">0</property> + <property name="label">2</property> </widget> <packing> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="label334"> + <widget class="GtkLabel" id="state-host-cpus"> <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Total CPUs on host machine:</property> + <property name="xalign">0</property> + <property name="label">8</property> </widget> <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> <property name="top_attach">3</property> <property name="bottom_attach">4</property> <property name="x_options">GTK_FILL</property> @@ -1209,14 +1210,12 @@ </packing> </child> <child> - <widget class="GtkLabel" id="state-host-cpus"> + <widget class="GtkLabel" id="label334"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label">8</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Total CPUs on host machine:</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">3</property> <property name="bottom_attach">4</property> <property name="x_options">GTK_FILL</property> @@ -1224,40 +1223,42 @@ </packing> </child> <child> - <widget class="GtkLabel" id="state-vm-vcpus"> + <widget class="GtkLabel" id="label335"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label">2</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Maximum allocation:</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkSpinButton" id="config-vcpus"> + <widget class="GtkLabel" id="label333"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="adjustment">2 1 32 1 2 0</property> - <property name="climb_rate">1</property> - <property name="numeric">True</property> - <property name="update_policy">GTK_UPDATE_IF_VALID</property> - <accessibility> - <atkproperty name="AtkObject::accessible_name" translatable="yes">Virtual CPU Select</atkproperty> - </accessibility> - <signal name="changed" handler="on_config_vcpus_changed"/> + <property name="xalign">1</property> + <property name="label" translatable="yes">Change allocation:</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">1</property> <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> + <child> + <widget class="GtkLabel" id="label347"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Current allocation:</property> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> </widget> <packing> <property name="expand">False</property> @@ -1410,79 +1411,39 @@ <property name="column_spacing">3</property> <property name="row_spacing">3</property> <child> - <widget class="GtkLabel" id="label309"> + <widget class="GtkHBox" id="hbox47"> <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Current allocation:</property> - </widget> - <packing> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label60"> - <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Change allocation:</property> - </widget> - <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label307"> - <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Maximum allocation:</property> - </widget> - <packing> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label61"> - <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Total memory on host machine:</property> - </widget> - <packing> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="state-host-memory"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label">2 GB</property> + <child> + <widget class="GtkSpinButton" id="config-maxmem"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="adjustment">50 50 32000 5 10 0</property> + <property name="climb_rate">1</property> + <property name="numeric">True</property> + <property name="update_policy">GTK_UPDATE_IF_VALID</property> + <accessibility> + <atkproperty name="AtkObject::accessible_name" translatable="yes">Max Memory Select</atkproperty> + </accessibility> + <signal name="changed" handler="on_config_maxmem_changed"/> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label346"> + <property name="visible">True</property> + <property name="label" translatable="yes">MB</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="state-vm-memory"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label">200 MB</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> @@ -1526,43 +1487,83 @@ </packing> </child> <child> - <widget class="GtkHBox" id="hbox47"> + <widget class="GtkLabel" id="state-vm-memory"> <property name="visible">True</property> - <child> - <widget class="GtkSpinButton" id="config-maxmem"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="adjustment">50 50 32000 5 10 0</property> - <property name="climb_rate">1</property> - <property name="numeric">True</property> - <property name="update_policy">GTK_UPDATE_IF_VALID</property> - <accessibility> - <atkproperty name="AtkObject::accessible_name" translatable="yes">Max Memory Select</atkproperty> - </accessibility> - <signal name="changed" handler="on_config_maxmem_changed"/> - </widget> - </child> - <child> - <widget class="GtkLabel" id="label346"> - <property name="visible">True</property> - <property name="label" translatable="yes">MB</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> + <property name="xalign">0</property> + <property name="label">200 MB</property> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="state-host-memory"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label">2 GB</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label61"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Total memory on host machine:</property> + </widget> + <packing> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label307"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Maximum allocation:</property> + </widget> + <packing> <property name="top_attach">2</property> <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> + <child> + <widget class="GtkLabel" id="label60"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Change allocation:</property> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label309"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Current allocation:</property> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> </widget> <packing> <property name="expand">False</property> @@ -1690,6 +1691,17 @@ <property name="n_rows">2</property> <property name="n_columns">1</property> <child> + <widget class="GtkComboBox" id="config-boot-device"> + <property name="visible">True</property> + <signal name="changed" handler="on_config_boot_device_changed"/> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + </packing> + </child> + <child> <widget class="GtkLabel" id="label4"> <property name="visible">True</property> <property name="xalign">0</property> @@ -1700,17 +1712,6 @@ <property name="y_options"></property> </packing> </child> - <child> - <widget class="GtkComboBox" id="config-boot-device"> - <property name="visible">True</property> - <signal name="changed" handler="on_config_boot_device_changed"/> - </widget> - <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - </packing> - </child> </widget> </child> </widget> @@ -1807,71 +1808,102 @@ <placeholder/> </child> <child> - <widget class="GtkLabel" id="disk-source-path"> + <widget class="GtkButton" id="config-cdrom-connect"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="label">gtk-connect</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="on_config_cdrom_connect_clicked"/> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="bottom_attach">3</property> + <property name="x_options"></property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="disk-bus"> <property name="visible">True</property> <property name="xalign">0</property> - <property name="label">label402</property> - <property name="ellipsize">PANGO_ELLIPSIZE_START</property> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label373"> - <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Source type:</property> - <property name="use_underline">True</property> - <property name="justify">GTK_JUSTIFY_RIGHT</property> - </widget> - <packing> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="label392"> + <widget class="GtkLabel" id="label507"> <property name="visible">True</property> <property name="xalign">1</property> - <property name="label" translatable="yes">Source path:</property> - <property name="use_underline">True</property> + <property name="label" translatable="yes">Target bus:</property> </widget> <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="label375"> + <widget class="GtkLabel" id="disk-permissions"> <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Target type:</property> - <property name="use_underline">True</property> + <property name="xalign">0</property> + <property name="label">label423</property> </widget> <packing> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="label374"> + <widget class="GtkLabel" id="permissions-label"> <property name="visible">True</property> <property name="xalign">1</property> - <property name="label" translatable="yes">Target device:</property> - <property name="use_underline">True</property> + <property name="label" translatable="yes">Permissions:</property> </widget> <packing> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="disk-source-type"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Block</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="disk-target-type"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">disk </property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> @@ -1892,14 +1924,27 @@ </packing> </child> <child> - <widget class="GtkLabel" id="disk-target-type"> + <widget class="GtkLabel" id="label374"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">disk </property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Target device:</property> + <property name="use_underline">True</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label375"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Target type:</property> + <property name="use_underline">True</property> + </widget> + <packing> <property name="top_attach">2</property> <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> @@ -1907,88 +1952,44 @@ </packing> </child> <child> - <widget class="GtkLabel" id="disk-source-type"> + <widget class="GtkLabel" id="label392"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Block</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Source path:</property> + <property name="use_underline">True</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="permissions-label"> + <widget class="GtkLabel" id="label373"> <property name="visible">True</property> <property name="xalign">1</property> - <property name="label" translatable="yes">Permissions:</property> + <property name="label" translatable="yes">Source type:</property> + <property name="use_underline">True</property> + <property name="justify">GTK_JUSTIFY_RIGHT</property> </widget> <packing> - <property name="top_attach">5</property> - <property name="bottom_attach">6</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="disk-permissions"> + <widget class="GtkLabel" id="disk-source-path"> <property name="visible">True</property> <property name="xalign">0</property> - <property name="label">label423</property> + <property name="label">label402</property> + <property name="ellipsize">PANGO_ELLIPSIZE_START</property> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">5</property> - <property name="bottom_attach">6</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label507"> - <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Target bus:</property> - </widget> - <packing> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="disk-bus"> - <property name="visible">True</property> - <property name="xalign">0</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkButton" id="config-cdrom-connect"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="label">gtk-connect</property> - <property name="use_stock">True</property> - <property name="response_id">0</property> - <signal name="clicked" handler="on_config_cdrom_connect_clicked"/> - </widget> - <packing> - <property name="left_attach">2</property> - <property name="right_attach">3</property> - <property name="bottom_attach">3</property> - <property name="x_options"></property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> <property name="y_options"></property> </packing> </child> @@ -2132,54 +2133,43 @@ <property name="column_spacing">8</property> <property name="row_spacing">4</property> <child> - <widget class="GtkLabel" id="label369"> + <widget class="GtkLabel" id="network-source-model"> <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Source type:</property> - <property name="use_underline">True</property> + <property name="xalign">0</property> </widget> <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="label397"> + <widget class="GtkLabel" id="label509"> <property name="visible">True</property> <property name="xalign">1</property> - <property name="label" translatable="yes">Source device:</property> + <property name="label" translatable="yes">Source model:</property> </widget> <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="network-source-type"> + <widget class="GtkLabel" id="mac-address-label"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label">label395</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">MAC address:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">network-mac-address</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="network-source-device"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label">label401</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> @@ -2202,43 +2192,54 @@ </packing> </child> <child> - <widget class="GtkLabel" id="mac-address-label"> + <widget class="GtkLabel" id="network-source-device"> <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">MAC address:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">network-mac-address</property> + <property name="xalign">0</property> + <property name="label">label401</property> </widget> <packing> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="label509"> + <widget class="GtkLabel" id="network-source-type"> <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Source model:</property> + <property name="xalign">0</property> + <property name="label">label395</property> </widget> <packing> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="network-source-model"> + <widget class="GtkLabel" id="label397"> <property name="visible">True</property> - <property name="xalign">0</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Source device:</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label369"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Source type:</property> + <property name="use_underline">True</property> + </widget> + <packing> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> @@ -2371,27 +2372,14 @@ <property name="column_spacing">8</property> <property name="row_spacing">4</property> <child> - <widget class="GtkLabel" id="label402"> + <widget class="GtkLabel" id="input-dev-type"> <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Type:</property> - <property name="use_underline">True</property> + <property name="xalign">0</property> + <property name="label">label403</property> </widget> <packing> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label405"> - <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Mode:</property> - </widget> - <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> <property name="y_options"></property> </packing> </child> @@ -2411,14 +2399,27 @@ </packing> </child> <child> - <widget class="GtkLabel" id="input-dev-type"> + <widget class="GtkLabel" id="label405"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label">label403</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Mode:</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label402"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Type:</property> + <property name="use_underline">True</property> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> @@ -2550,27 +2551,12 @@ <property name="column_spacing">8</property> <property name="row_spacing">4</property> <child> - <widget class="GtkLabel" id="graphics-type"> + <widget class="GtkLabel" id="label5"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label">label403</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Keymap:</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="y_options"></property> - <property name="y_padding">1</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="graphics-keymap"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label">keylabel</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">4</property> <property name="bottom_attach">5</property> <property name="x_options">GTK_FILL</property> @@ -2578,14 +2564,12 @@ </packing> </child> <child> - <widget class="GtkLabel" id="graphics-password"> + <widget class="GtkLabel" id="label419"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label">label401</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Password:</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">3</property> <property name="bottom_attach">4</property> <property name="x_options">GTK_FILL</property> @@ -2593,14 +2577,37 @@ </packing> </child> <child> - <widget class="GtkLabel" id="graphics-port"> + <widget class="GtkLabel" id="label410"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label">label401</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Type:</property> + <property name="use_underline">True</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label412"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Address:</property> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label418"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Port:</property> + </widget> + <packing> <property name="top_attach">2</property> <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> @@ -2623,12 +2630,14 @@ </packing> </child> <child> - <widget class="GtkLabel" id="label418"> + <widget class="GtkLabel" id="graphics-port"> <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Port:</property> + <property name="xalign">0</property> + <property name="label">label401</property> </widget> <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> <property name="top_attach">2</property> <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> @@ -2636,37 +2645,14 @@ </packing> </child> <child> - <widget class="GtkLabel" id="label412"> + <widget class="GtkLabel" id="graphics-password"> <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Address:</property> + <property name="xalign">0</property> + <property name="label">label401</property> </widget> <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label410"> - <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Type:</property> - <property name="use_underline">True</property> - </widget> - <packing> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label419"> - <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Password:</property> - </widget> - <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> <property name="top_attach">3</property> <property name="bottom_attach">4</property> <property name="x_options">GTK_FILL</property> @@ -2674,18 +2660,33 @@ </packing> </child> <child> - <widget class="GtkLabel" id="label5"> + <widget class="GtkLabel" id="graphics-keymap"> <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Keymap:</property> + <property name="xalign">0</property> + <property name="label">keylabel</property> </widget> <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> <property name="top_attach">4</property> <property name="bottom_attach">5</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> + <child> + <widget class="GtkLabel" id="graphics-type"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label">label403</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="y_options"></property> + <property name="y_padding">1</property> + </packing> + </child> </widget> </child> </widget> @@ -2766,17 +2767,6 @@ <property name="column_spacing">8</property> <property name="row_spacing">4</property> <child> - <widget class="GtkLabel" id="label452"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Device Model:</property> - </widget> - <packing> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> <widget class="GtkLabel" id="sound-model"> <property name="visible">True</property> <property name="xalign">0</property> @@ -2790,6 +2780,17 @@ <property name="y_padding">1</property> </packing> </child> + <child> + <widget class="GtkLabel" id="label452"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Device Model:</property> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> </widget> </child> </widget> @@ -2868,51 +2869,16 @@ <property name="column_spacing">8</property> <property name="row_spacing">4</property> <child> - <widget class="GtkLabel" id="label503"> - <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Device Type:</property> - </widget> - <packing> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label504"> - <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Target Port:</property> - </widget> - <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label505"> - <property name="visible">True</property> - <property name="xalign">1</property> - <property name="label" translatable="yes">Source Path:</property> - </widget> - <packing> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="char-dev-type"> + <widget class="GtkLabel" id="char-source-path"> <property name="visible">True</property> <property name="xalign">0</property> - <property name="label" translatable="yes">label506</property> + <property name="label" translatable="yes">label508</property> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> @@ -2933,20 +2899,55 @@ </packing> </child> <child> - <widget class="GtkLabel" id="char-source-path"> + <widget class="GtkLabel" id="char-dev-type"> <property name="visible">True</property> <property name="xalign">0</property> - <property name="label" translatable="yes">label508</property> + <property name="label" translatable="yes">label506</property> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label505"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Source Path:</property> + </widget> + <packing> <property name="top_attach">2</property> <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> + <child> + <widget class="GtkLabel" id="label504"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Target Port:</property> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label503"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Device Type:</property> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> </widget> </child> </widget> @@ -3004,6 +3005,160 @@ <property name="tab_fill">False</property> </packing> </child> + <child> + <widget class="GtkVBox" id="vbox4"> + <property name="visible">True</property> + <child> + <widget class="GtkFrame" id="frame6"> + <property name="visible">True</property> + <property name="label_xalign">0</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <child> + <widget class="GtkAlignment" id="alignment5"> + <property name="visible">True</property> + <property name="top_padding">5</property> + <property name="left_padding">12</property> + <child> + <widget class="GtkTable" id="table50"> + <property name="visible">True</property> + <property name="n_rows">3</property> + <property name="n_columns">2</property> + <property name="column_spacing">8</property> + <property name="row_spacing">4</property> + <child> + <widget class="GtkLabel" id="label3"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Source Device:</property> + </widget> + <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label8"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Device Type:</property> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label9"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Device Mode:</property> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="hostdev-type"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">label</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="hostdev-mode"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">label</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="hostdev-source"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">label</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="y_options"></property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="hostdev-title"> + <property name="visible">True</property> + <property name="label"><b>Physical Host Device</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">15</property> + </packing> + </child> + <child> + <widget class="GtkHButtonBox" id="hbuttonbox1"> + <property name="visible">True</property> + <property name="border_width">6</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + <child> + <widget class="GtkButton" id="config-hostdev-remove"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="label">gtk-remove</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="on_config_hostdev_remove_clicked"/> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="position">9</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label6"> + <property name="visible">True</property> + <property name="label">Hostdev</property> + </widget> + <packing> + <property name="type">tab</property> + <property name="position">9</property> + <property name="tab_fill">False</property> + </packing> + </child> </widget> <packing> <property name="resize">True</property>
_______________________________________________ et-mgmt-tools mailing list et-mgmt-tools@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/et-mgmt-tools