diff --git a/src/virtManager/details.py b/src/virtManager/details.py
index 61e011870..0d60d638d 100644
--- a/src/virtManager/details.py
+++ b/src/virtManager/details.py
@@ -182,6 +182,12 @@ class vmmDetails(gobject.GObject):
self.addhw = None
self.choose_cd = None
+ # Security info tooltips
+ util.tooltip_wrapper(self.window.get_widget("security-static-info"),
+ _("Static SELinux security type tells libvirt to always start the guest process with the specified label. The administrator is responsible for making sure the images are labeled corectly on disk."))
+ util.tooltip_wrapper(self.window.get_widget("security-dynamic-info"),
+ _("The dynamic SELinux security type tells libvirt to automatically pick a unique label for the guest process and guest image, ensuring total isolation of the guest. (Default)"))
+
self.cpu_usage_graph = sparkline.Sparkline()
self.cpu_usage_graph.set_property("reversed", True)
self.window.get_widget("graph-table").attach(self.cpu_usage_graph, 1, 2, 0, 1)
@@ -276,6 +282,7 @@ class vmmDetails(gobject.GObject):
"on_details_pages_switch_page": self.switch_page,
+ "on_config_security_apply_clicked": self.config_security_apply,
"on_config_vcpus_apply_clicked": self.config_vcpus_apply,
"on_config_vcpus_changed": self.config_vcpus_changed,
"on_config_memory_changed": self.config_memory_changed,
@@ -320,6 +327,9 @@ class vmmDetails(gobject.GObject):
"on_console_auth_password_activate": self.auth_login,
"on_console_auth_login_clicked": self.auth_login,
+ "on_security_label_changed": self.security_label_changed,
+ "on_security_type_changed": self.security_type_changed,
+ "on_security_model_changed": self.security_model_changed,
})
self.vm.connect("status-changed", self.update_widget_states)
@@ -650,7 +660,7 @@ class vmmDetails(gobject.GObject):
def hw_selected(self, src=None):
pagetype = self.get_hw_selection(HW_LIST_COL_TYPE)
- if not pagetype:
+ if pagetype is None:
self.window.get_widget("hw-panel").set_sensitive(True)
self.window.get_widget("hw-list").get_selection().select_path(0)
self.window.get_widget("hw-panel").set_current_page(0)
@@ -902,6 +912,32 @@ class vmmDetails(gobject.GObject):
self.window.get_widget("overview-arch").set_text(arch)
self.window.get_widget("overview-emulator").set_text(emu)
+ vmmodel, ignore, vmlabel = self.vm.get_seclabel()
+ semodel_combo = self.window.get_widget("security-model")
+ semodel_model = semodel_combo.get_model()
+ caps = self.vm.get_connection().get_capabilities()
+
+ semodel_model.clear()
+ semodel_model.append(["None"])
+ if caps.host.secmodel and caps.host.secmodel.model:
+ semodel_model.append([caps.host.secmodel.model])
+
+ active = 0
+ for i in range(0, len(semodel_model)):
+ if vmmodel and vmmodel == semodel_model[i][0]:
+ active = i
+ break
+ semodel_combo.set_active(active)
+
+ if self.vm.get_seclabel()[1] == "static":
+ self.window.get_widget("security-static").set_active(True)
+ else:
+ self.window.get_widget("security-dynamic").set_active(True)
+
+ self.window.get_widget("security-label").set_text(vmlabel)
+ semodel_combo.emit("changed")
+ self.window.get_widget("config-security-apply").set_sensitive(False)
+
def refresh_stats_page(self):
def _rx_tx_text(rx, tx, unit):
return '%(rx)d %(unit)s in\n%(tx)d %(unit)s out' % locals()
@@ -1499,6 +1535,50 @@ class vmmDetails(gobject.GObject):
self.window.get_widget("details-pages").remove_page(page_idx)
self.dynamic_tabs.remove(name)
+ # -----------------------
+ # Overview -> Security
+ # -----------------------
+ def security_model_changed(self, combo):
+ model = combo.get_model()
+ idx = combo.get_active()
+ if idx < 0:
+ return
+
+ self.window.get_widget("config-security-apply").set_sensitive(True)
+ val = model[idx][0]
+ show_type = (val == "selinux")
+ self.window.get_widget("security-type-box").set_sensitive(show_type)
+
+ def security_label_changed(self, label):
+ self.window.get_widget("config-security-apply").set_sensitive(True)
+
+ def security_type_changed(self, button, sensitive = True):
+ self.window.get_widget("config-security-apply").set_sensitive(True)
+ self.window.get_widget("security-label").set_sensitive(not button.get_active())
+
+ def config_security_apply(self, src):
+ combo = self.window.get_widget("security-model")
+ model = combo.get_model()
+ semodel = model[combo.get_active()][0]
+
+ if not semodel or str(semodel).lower() == "none":
+ semodel = None
+
+ if self.window.get_widget("security-dynamic").get_active():
+ setype = "dynamic"
+ else:
+ setype = "static"
+
+ selabel = self.window.get_widget("security-label").get_text()
+ try:
+ self.vm.define_seclabel(semodel, setype, selabel)
+ except Exception, e:
+ self.err.show_err(_("Error Setting Security data: %s") % str(e),
+ "".join(traceback.format_exc()))
+ return
+
+ self.window.get_widget("config-security-apply").set_sensitive(False)
+
# -----------------------
# Hardware Section Pieces
# -----------------------
diff --git a/src/virtManager/domain.py b/src/virtManager/domain.py
index f0f427ece..8a9d629a8 100644
--- a/src/virtManager/domain.py
+++ b/src/virtManager/domain.py
@@ -1322,6 +1322,49 @@ class vmmDomain(gobject.GObject):
self.redefine(util.xml_parse_wrapper, set_boot_xml)
+ def get_seclabel(self):
+ xml = self.get_xml()
+ model = vutil.get_xml_path(xml, "/domain/seclabel/@model")
+ t = vutil.get_xml_path(self.get_xml(), "/domain/seclabel/@type")
+ label = vutil.get_xml_path(self.get_xml(), "/domain/seclabel/label")
+
+ return [model, t or "dynamic", label or ""]
+
+ def define_seclabel(self, model, t, label):
+ logging.debug("Changing seclabel with model=%s t=%s label=%s" %
+ (model, t, label))
+
+ def change_label(doc, ctx):
+ secnode = ctx.xpathEval("/domain/seclabel")
+ secnode = (secnode and secnode[0] or None)
+
+ if not model:
+ if secnode:
+ secnode.unlinkNode()
+
+ elif not secnode:
+ # Need to create new node
+ domain = ctx.xpathEval("/domain")[0]
+ seclabel = domain.newChild(None, "seclabel", None)
+ seclabel.setProp("model", model)
+ seclabel.setProp("type", t)
+ seclabel.newChild(None, "label", label)
+
+ else:
+ # Change existing label info
+ secnode.setProp("model", model)
+ secnode.setProp("type", t)
+ l = ctx.xpathEval("/domain/seclabel/label")
+ if len(l) > 0:
+ l[0].setContent(label)
+ else:
+ secnode.newChild(None, "label", label)
+
+ return doc.serialize()
+
+ self.redefine(util.xml_parse_wrapper,
+ change_label)
+
def toggle_sample_cpu_stats(self, ignore1=None, ignore2=None,
ignore3=None, ignore4=None):
if self.config.get_stats_enable_cpu_poll():
diff --git a/src/vmm-details.glade b/src/vmm-details.glade
index c23f9a737..194d1a8d1 100644
--- a/src/vmm-details.glade
+++ b/src/vmm-details.glade
@@ -1,7 +1,7 @@
-
+
+
+
-
-
Virtual Machine
800
@@ -36,8 +36,8 @@
@@ -414,7 +415,6 @@
False
False
- 0
@@ -431,7 +431,6 @@
False
- True
@@ -445,7 +444,6 @@
False
- True
@@ -458,6 +456,7 @@
False
+ False
@@ -466,6 +465,7 @@
False
+ False
@@ -476,7 +476,6 @@
False
- True
@@ -503,7 +502,7 @@
True
<b>The console is currently unavailable</b>
True
- center
+ GTK_JUSTIFY_CENTER
True
@@ -516,20 +515,20 @@
Unavailable
- False
tab
+ False
True
True
- automatic
- automatic
+ GTK_POLICY_AUTOMATIC
+ GTK_POLICY_AUTOMATIC
True
- none
+ GTK_SHADOW_NONE
True
@@ -556,9 +555,9 @@
Screenshot
+ tab
1
False
- tab
@@ -570,79 +569,19 @@
3
3
-
- True
- 0
- Password:
-
-
- 1
- 2
- GTK_FILL
-
-
+
-
- True
- True
- False
-
-
- 1
- 2
- 1
- 2
-
-
+
-
- Save this password in your keyring
- True
- True
- False
- True
- 0
- True
-
-
- 1
- 2
- 2
- 3
- GTK_FILL
-
-
-
-
-
- True
- 0
- Username:
-
-
- GTK_FILL
-
-
-
-
-
- True
- True
-
-
-
- 1
- 2
-
-
+
True
True
- False
+ 0
@@ -661,7 +600,6 @@
False
False
- 0
@@ -691,13 +629,73 @@
-
+
+ True
+ True
+
+
+
+ 1
+ 2
+
+
-
+
+ True
+ 0
+ Username:
+
+
+ GTK_FILL
+
+
-
+
+ True
+ True
+ Save this password in your keyring
+ True
+ 0
+ 0
+ True
+
+
+ 1
+ 2
+ 2
+ 3
+ GTK_FILL
+
+
+
+
+
+ True
+ True
+ False
+
+
+ 1
+ 2
+ 1
+ 2
+
+
+
+
+
+ True
+ 0
+ Password:
+
+
+ 1
+ 2
+ GTK_FILL
+
+
@@ -710,21 +708,21 @@
Auth
+ tab
2
False
- tab
True
True
- automatic
- automatic
+ GTK_POLICY_AUTOMATIC
+ GTK_POLICY_AUTOMATIC
True
- none
+ GTK_SHADOW_NONE
@@ -741,9 +739,9 @@
VNC
+ tab
3
False
- tab
@@ -754,20 +752,20 @@
Console
- False
tab
+ False
True
True
- automatic
- automatic
+ GTK_POLICY_AUTOMATIC
+ GTK_POLICY_AUTOMATIC
True
- none
+ GTK_SHADOW_NONE
True
@@ -782,9 +780,9 @@
True
True
- automatic
- automatic
- in
+ GTK_POLICY_AUTOMATIC
+ GTK_POLICY_AUTOMATIC
+ GTK_SHADOW_IN
True
@@ -793,15 +791,12 @@
-
- 0
-
True
True
- False
+ 0
@@ -820,7 +815,6 @@
False
False
- 0
@@ -859,145 +853,149 @@
True
+ 3
12
-
+
True
- 3
- 0
- none
+ 12
-
+
True
- 12
+ 3
+ 0
+ GTK_SHADOW_NONE
-
+
True
- 3
- 3
- 2
- 6
- 6
+ 12
-
+
True
- 0
- test-vm
- True
-
-
- 1
- 2
- GTK_FILL
- GTK_FILL
-
-
-
-
- True
- 0
- 8ffc926e-b4da-b3b6-552f-e37b92f918d5
- True
-
-
- 1
- 2
- 1
- 2
-
-
-
-
-
- True
- 3
+ 3
+ 3
+ 2
+ 6
+ 6
-
- True
- gtk-stop
-
-
- False
- 0
-
-
-
-
+
True
0
- Shut down
+ test-vm
+ True
- False
- 1
+ 1
+ 2
+ GTK_FILL
+ GTK_FILL
+
+
+
+
+ True
+ 0
+ 8ffc926e-b4da-b3b6-552f-e37b92f918d5
+ True
+
+
+ 1
+ 2
+ 1
+ 2
+
+
+
+
+
+ True
+ 3
+
+
+ True
+ gtk-stop
+
+
+ False
+
+
+
+
+ True
+ 0
+ Shut down
+
+
+ False
+ 1
+
+
+
+
+ 1
+ 2
+ 2
+ 3
+ GTK_FILL
+ GTK_FILL
+
+
+
+
+ True
+ 1
+ Name:
+
+
+ GTK_FILL
+
+
+
+
+
+ True
+ 1
+ UUID:
+
+
+ 1
+ 2
+ GTK_FILL
+
+
+
+
+
+ True
+ 1
+ Status:
+
+
+ 2
+ 3
+ GTK_FILL
+
-
- 1
- 2
- 2
- 3
- GTK_FILL
- GTK_FILL
-
-
-
-
- True
- 1
- Name:
-
-
- GTK_FILL
-
-
-
-
-
- True
- 1
- UUID:
-
-
- 1
- 2
- GTK_FILL
-
-
-
-
-
- True
- 1
- Status:
-
-
- 2
- 3
- GTK_FILL
-
-
+
+
+ True
+ <b>Basic details</b>
+ True
+
+
+ label_item
+
+
-
-
- True
- <b>Basic details</b>
- True
-
-
- label_item
-
-
False
- 15
- 0
@@ -1005,7 +1003,7 @@
True
3
0
- none
+ GTK_SHADOW_NONE
True
@@ -1019,52 +1017,14 @@
6
6
-
+
True
1
- Hypervisor:
+ Emulator:
- GTK_FILL
- GTK_FILL
-
-
-
-
- True
- Architecture:
-
-
- 1
- 2
- GTK_FILL
- GTK_FILL
-
-
-
-
- True
- 0
- foo
-
-
- 1
- 2
- GTK_FILL
- GTK_FILL
-
-
-
-
- True
- 0
- foo
-
-
- 1
- 2
- 1
- 2
+ 2
+ 3
GTK_FILL
GTK_FILL
@@ -1085,14 +1045,52 @@
-
+
True
- 1
- Emulator:
+ 0
+ foo
+
+
+ 1
+ 2
+ 1
+ 2
+ GTK_FILL
+ GTK_FILL
+
+
+
+
+ True
+ 0
+ foo
+
+
+ 1
+ 2
+ GTK_FILL
+ GTK_FILL
+
+
+
+
+ True
+ Architecture:
+
+
+ 1
+ 2
+ GTK_FILL
+ GTK_FILL
+
+
+
+
+ True
+ 1
+ Hypervisor:
- 2
- 3
GTK_FILL
GTK_FILL
@@ -1113,9 +1111,235 @@
+ False
1
+
+
+ True
+ True
+ 3
+
+
+ True
+ 12
+
+
+ True
+ 2
+ 2
+ 6
+ 6
+
+
+ True
+ 1
+ 0
+ Type:
+
+
+ 1
+ 2
+ GTK_FILL
+ GTK_FILL
+
+
+
+
+ True
+ 1
+ Model:
+
+
+ GTK_FILL
+ GTK_FILL
+
+
+
+
+ True
+ 3
+ 2
+ 6
+ 6
+
+
+ True
+ True
+ 0
+ gtk-info
+
+
+ 1
+ 2
+
+
+
+
+
+ True
+ True
+ 0
+ gtk-info
+
+
+ 1
+ 2
+ 1
+ 2
+
+
+
+
+
+ True
+ True
+ Static
+ True
+ 0
+ True
+ security-dynamic
+
+
+ 1
+ 2
+ GTK_FILL
+
+
+
+
+ True
+ True
+ Dynamic
+ True
+ 0
+ True
+
+
+
+
+
+
+
+
+
+ True
+ 6
+
+
+ True
+ 20
+
+
+ True
+ 0
+ Label:
+
+
+
+
+ False
+
+
+
+
+ True
+ True
+ ●
+
+
+
+ 1
+
+
+
+
+ 2
+ 2
+ 3
+ GTK_FILL
+ GTK_EXPAND
+
+
+
+
+ 1
+ 2
+ 1
+ 2
+ GTK_FILL
+
+
+
+
+ True
+ 6
+
+
+ True
+
+
+
+
+ False
+ False
+
+
+
+
+
+
+
+ 1
+ 2
+ GTK_FILL
+
+
+
+
+
+
+
+
+
+ True
+ <b>Security</b>
+ True
+
+
+ label_item
+
+
+
+
+ 2
+
+
+
+
+ True
+ 6
+ 5
+ GTK_BUTTONBOX_END
+
+
+ True
+ False
+ True
+ True
+ gtk-apply
+ True
+ 0
+
+
+
+
+
+ False
+ 3
+
+
@@ -1124,8 +1348,8 @@
Overview
- False
tab
+ False
@@ -1136,7 +1360,7 @@
True
3
0
- none
+ GTK_SHADOW_NONE
True
@@ -1150,92 +1374,34 @@
6
8
-
- True
- 1
- CPU
-usage:
- right
-
-
- GTK_FILL
-
-
+
-
- True
- 1
- Memory
-usage:
- right
-
-
- 1
- 2
- GTK_FILL
-
-
+
-
- True
- 1
- Disk
-I/O:
- right
-
-
- 2
- 3
- GTK_FILL
-
-
+
-
+
+
+
+
True
- 1
- Network
-I/O:
- right
+ 0
+ 0 KBytes/s
+0KBytes/s
+ True
+ 2
+ 3
3
4
GTK_FILL
-
-
- True
- 0
- 18%
-
-
- 2
- 3
- GTK_FILL
-
-
-
-
-
- True
- 0
- 30 MB of
-128 MB
-
-
- 2
- 3
- 1
- 2
- GTK_FILL
-
-
-
True
@@ -1254,16 +1420,43 @@ I/O:
-
+
True
0
- 0 KBytes/s
-0KBytes/s
- True
+ 30 MB of
+128 MB
2
3
+ 1
+ 2
+ GTK_FILL
+
+
+
+
+
+ True
+ 0
+ 18%
+
+
+ 2
+ 3
+ GTK_FILL
+
+
+
+
+
+ True
+ 1
+ Network
+I/O:
+ GTK_JUSTIFY_RIGHT
+
+
3
4
GTK_FILL
@@ -1271,16 +1464,47 @@ I/O:
-
+
+ True
+ 1
+ Disk
+I/O:
+ GTK_JUSTIFY_RIGHT
+
+
+ 2
+ 3
+ GTK_FILL
+
+
-
+
+ True
+ 1
+ Memory
+usage:
+ GTK_JUSTIFY_RIGHT
+
+
+ 1
+ 2
+ GTK_FILL
+
+
-
-
-
-
+
+ True
+ 1
+ CPU
+usage:
+ GTK_JUSTIFY_RIGHT
+
+
+ GTK_FILL
+
+
@@ -1299,7 +1523,6 @@ I/O:
15
- 0
@@ -1313,9 +1536,9 @@ I/O:
Stats
+ tab
1
False
- tab
@@ -1325,7 +1548,7 @@ I/O:
True
0
- none
+ GTK_SHADOW_NONE
True
@@ -1345,7 +1568,6 @@ I/O:
False
False
- 0
@@ -1357,23 +1579,21 @@ I/O:
3
3
-
+
True
- 1
- Current allocation:
-
-
- GTK_FILL
-
-
-
-
-
- True
- 1
- Change allocation:
+ True
+ 2 1 32 1 2 0
+ 1
+ True
+ GTK_UPDATE_IF_VALID
+
+ Virtual CPU Select
+
+
+ 1
+ 2
1
2
GTK_FILL
@@ -1381,25 +1601,27 @@ I/O:
-
+
True
- 1
- Maximum allocation:
+ 0
+ 2
- 2
- 3
+ 1
+ 2
GTK_FILL
-
+
True
- 1
- Total CPUs on host machine:
+ 0
+ 8
+ 1
+ 2
3
4
GTK_FILL
@@ -1422,14 +1644,12 @@ I/O:
-
+
True
- 0
- 8
+ 1
+ Total CPUs on host machine:
- 1
- 2
3
4
GTK_FILL
@@ -1437,40 +1657,42 @@ I/O:
-
+
True
- 0
- 2
+ 1
+ Maximum allocation:
- 1
- 2
+ 2
+ 3
GTK_FILL
-
+
True
- True
- 2 1 32 1 2 0
- 1
- True
- if-valid
-
- Virtual CPU Select
-
-
+ 1
+ Change allocation:
- 1
- 2
1
2
GTK_FILL
+
+
+ True
+ 1
+ Current allocation:
+
+
+ GTK_FILL
+
+
+
False
@@ -1497,7 +1719,6 @@ I/O:
False
False
15
- 0
@@ -1517,7 +1738,6 @@ I/O:
False
False
- 0
@@ -1551,29 +1771,28 @@ I/O:
True
6
5
- end
+ GTK_BUTTONBOX_END
- gtk-apply
True
False
True
True
- False
+ gtk-apply
True
+ 0
False
False
- 0
False
False
- end
+ GTK_PACK_END
2
@@ -1588,9 +1807,9 @@ I/O:
Proc
+ tab
2
False
- tab
@@ -1600,7 +1819,7 @@ I/O:
True
0
- none
+ GTK_SHADOW_NONE
True
@@ -1620,7 +1839,6 @@ I/O:
False
False
- 0
@@ -1632,83 +1850,43 @@ I/O:
3
3
-
+
True
- 1
- Current allocation:
-
-
- GTK_FILL
-
-
-
-
-
- True
- 1
- Change allocation:
-
-
- 1
- 2
- GTK_FILL
-
-
-
-
-
- True
- 1
- Maximum allocation:
+
+
+ True
+ True
+ 50 50 32000 1 25 0
+ 2
+ True
+ GTK_UPDATE_IF_VALID
+
+ Max Memory Select
+
+
+
+
+
+
+ True
+ MB
+
+
+ False
+ False
+ 1
+
+
+ 1
+ 2
2
3
GTK_FILL
-
-
- True
- 1
- Total memory on host machine:
-
-
- 3
- 4
- GTK_FILL
-
-
-
-
-
- True
- 0
- 2 GB
-
-
- 1
- 2
- 3
- 4
- GTK_FILL
-
-
-
-
-
- True
- 0
- 200 MB
-
-
- 1
- 2
- GTK_FILL
-
-
-
True
@@ -1719,15 +1897,12 @@ I/O:
50 50 32000 1 25 0
2
True
- if-valid
+ GTK_UPDATE_IF_VALID
- Memory Select
+ Memory Select
-
- 0
-
@@ -1751,46 +1926,83 @@ I/O:
-
+
True
-
-
- True
- True
- 50 50 32000 1 25 0
- 2
- True
- if-valid
-
- Max Memory Select
-
-
-
-
- 0
-
-
-
-
- True
- MB
-
-
- False
- False
- 1
-
-
+ 0
+ 200 MB
1
2
+ GTK_FILL
+
+
+
+
+
+ True
+ 0
+ 2 GB
+
+
+ 1
+ 2
+ 3
+ 4
+ GTK_FILL
+
+
+
+
+
+ True
+ 1
+ Total memory on host machine:
+
+
+ 3
+ 4
+ GTK_FILL
+
+
+
+
+
+ True
+ 1
+ Maximum allocation:
+
+
2
3
GTK_FILL
+
+
+ True
+ 1
+ Change allocation:
+
+
+ 1
+ 2
+ GTK_FILL
+
+
+
+
+
+ True
+ 1
+ Current allocation:
+
+
+ GTK_FILL
+
+
+
False
@@ -1815,7 +2027,6 @@ I/O:
15
- 0
@@ -1823,22 +2034,21 @@ I/O:
True
6
5
- end
+ GTK_BUTTONBOX_END
- gtk-apply
True
False
True
True
- False
+ gtk-apply
True
+ 0
False
False
- 0
@@ -1859,9 +2069,9 @@ I/O:
Mem
+ tab
3
False
- tab
@@ -1874,18 +2084,18 @@ I/O:
True
0
- none
+ GTK_SHADOW_NONE
True
12
- Start virtual machine on host boot up
True
True
- False
+ Start virtual machine on host boot up
True
+ 0
True
@@ -1907,14 +2117,13 @@ I/O:
False
False
15
- 0
True
0
- none
+ GTK_SHADOW_NONE
True
@@ -1923,17 +2132,6 @@ I/O:
True
2
-
-
- True
- 0
- Device virtual machine will boot from:
-
-
-
-
-
-
True
@@ -1945,6 +2143,17 @@ I/O:
GTK_FILL
+
+
+ True
+ 0
+ Device virtual machine will boot from:
+
+
+
+
+
+
@@ -1967,31 +2176,27 @@ I/O:
-
- 0
-
True
6
5
- end
+ GTK_BUTTONBOX_END
- gtk-apply
True
False
True
True
- False
+ gtk-apply
True
+ 0
False
False
- 0
@@ -2012,9 +2217,9 @@ I/O:
Boot
+ tab
4
False
- tab
@@ -2024,7 +2229,7 @@ I/O:
True
0
- none
+ GTK_SHADOW_NONE
True
@@ -2040,131 +2245,56 @@ I/O:
8
4
-
- True
- 0
- label402
- True
- start
-
-
- 1
- 2
- 1
- 2
-
-
+
-
- True
- 1
- Source type:
- True
- right
-
-
- GTK_FILL
-
-
+
-
- True
- 1
- Source path:
- True
-
-
- 1
- 2
- GTK_FILL
-
-
+
-
+
True
- 1
- Target type:
- True
+ True
+ True
+ gtk-connect
+ True
+ 0
+
- 2
+ 2
+ 3
3
+
+
+
+
+
+
+ True
+ 0
+ True
+
+
+ 1
+ 2
+ 4
+ 5
GTK_FILL
-
+
True
1
- Target device:
- True
+ Target bus:
- 3
- 4
- GTK_FILL
-
-
-
-
-
- True
- 0
- label393
- True
-
-
- 1
- 2
- 3
- 4
- GTK_FILL
-
-
-
-
-
- True
- 0
- disk
- True
-
-
- 1
- 2
- 2
- 3
- GTK_FILL
-
-
-
-
-
- True
- 0
- Block
- True
-
-
- 1
- 2
- GTK_FILL
-
-
-
-
-
- True
- 1
- Permissions:
-
-
- 5
- 6
+ 4
+ 5
GTK_FILL
@@ -2186,59 +2316,134 @@ I/O:
-
+
True
1
- Target bus:
+ Permissions:
- 4
- 5
+ 5
+ 6
GTK_FILL
-
+
True
0
+ Block
True
1
2
- 4
- 5
GTK_FILL
-
- gtk-connect
+
True
- True
- True
- False
- True
-
+ 0
+ disk
+ True
- 2
- 3
+ 1
+ 2
+ 2
3
-
+ GTK_FILL
-
+
+ True
+ 0
+ label393
+ True
+
+
+ 1
+ 2
+ 3
+ 4
+ GTK_FILL
+
+
-
+
+ True
+ 1
+ Target device:
+ True
+
+
+ 3
+ 4
+ GTK_FILL
+
+
-
+
+ True
+ 1
+ Target type:
+ True
+
+
+ 2
+ 3
+ GTK_FILL
+
+
+
+
+
+ True
+ 1
+ Source path:
+ True
+
+
+ 1
+ 2
+ GTK_FILL
+
+
+
+
+
+ True
+ 1
+ Source type:
+ True
+ GTK_JUSTIFY_RIGHT
+
+
+ GTK_FILL
+
+
+
+
+
+ True
+ 0
+ label402
+ True
+ PANGO_ELLIPSIZE_START
+
+
+ 1
+ 2
+ 1
+ 2
+
+
@@ -2259,7 +2464,6 @@ I/O:
False
False
15
- 0
@@ -2280,7 +2484,6 @@ I/O:
False
False
- 0
@@ -2312,21 +2515,20 @@ I/O:
True
6
- end
+ GTK_BUTTONBOX_END
- gtk-remove
True
True
True
- False
+ gtk-remove
True
+ 0
False
False
- 0
@@ -2339,12 +2541,12 @@ I/O:
True
5
- end
+ GTK_BUTTONBOX_END
False
False
- end
+ GTK_PACK_END
2
@@ -2359,9 +2561,9 @@ I/O:
Disk
+ tab
5
False
- tab
@@ -2371,7 +2573,7 @@ I/O:
True
0
- none
+ GTK_SHADOW_NONE
True
@@ -2387,24 +2589,75 @@ I/O:
8
4
-
+
True
- 1
- Source type:
- True
+ 0
+ True
+ 1
+ 2
+ 2
+ 3
GTK_FILL
-
+
True
1
- Source device:
+ Source model:
+ 2
+ 3
+ GTK_FILL
+
+
+
+
+
+ True
+ 1
+ MAC address:
+ True
+ network-mac-address
+
+
+ 3
+ 4
+ GTK_FILL
+
+
+
+
+
+ True
+ True
+ False
+
+ MAC Address Field
+
+
+
+ 1
+ 2
+ 3
+ 4
+
+
+
+
+
+ True
+ 0
+ label401
+ True
+
+
+ 1
+ 2
1
2
GTK_FILL
@@ -2426,15 +2679,12 @@ I/O:
-
+
True
- 0
- label401
- True
+ 1
+ Source device:
- 1
- 2
1
2
GTK_FILL
@@ -2442,61 +2692,13 @@ I/O:
-
- True
- True
- False
-
- MAC Address Field
-
-
-
- 1
- 2
- 3
- 4
-
-
-
-
-
+
True
1
- MAC address:
+ Source type:
True
- network-mac-address
- 3
- 4
- GTK_FILL
-
-
-
-
-
- True
- 1
- Source model:
-
-
- 2
- 3
- GTK_FILL
-
-
-
-
-
- True
- 0
- True
-
-
- 1
- 2
- 2
- 3
GTK_FILL
@@ -2520,7 +2722,6 @@ I/O:
False
False
15
- 0
@@ -2541,7 +2742,6 @@ I/O:
False
False
- 0
@@ -2573,21 +2773,20 @@ I/O:
True
6
- end
+ GTK_BUTTONBOX_END
- gtk-remove
True
True
True
- False
+ gtk-remove
True
+ 0
False
False
- 0
@@ -2608,9 +2807,9 @@ I/O:
Net
+ tab
6
False
- tab
@@ -2620,7 +2819,7 @@ I/O:
True
0
- none
+ GTK_SHADOW_NONE
True
@@ -2636,27 +2835,15 @@ I/O:
8
4
-
+
True
- 1
- Type:
- True
+ 0
+ label403
+ True
- GTK_FILL
-
-
-
-
-
- True
- 1
- Mode:
-
-
- 1
- 2
- GTK_FILL
+ 1
+ 2
@@ -2677,15 +2864,27 @@ I/O:
-
+
True
- 0
- label403
- True
+ 1
+ Mode:
- 1
- 2
+ 1
+ 2
+ GTK_FILL
+
+
+
+
+
+ True
+ 1
+ Type:
+ True
+
+
+ GTK_FILL
@@ -2708,7 +2907,6 @@ I/O:
False
False
15
- 0
@@ -2729,7 +2927,6 @@ I/O:
False
False
- 0
@@ -2761,21 +2958,20 @@ I/O:
True
6
- end
+ GTK_BUTTONBOX_END
- gtk-remove
True
True
True
- False
+ gtk-remove
True
+ 0
False
False
- 0
@@ -2796,9 +2992,9 @@ I/O:
Input
+ tab
7
False
- tab
@@ -2808,7 +3004,7 @@ I/O:
True
0
- none
+ GTK_SHADOW_NONE
True
@@ -2824,29 +3020,12 @@ I/O:
8
4
-
+
True
- 0
- label403
- True
+ 1
+ Keymap:
- 1
- 2
-
- 1
-
-
-
-
- True
- 0
- keylabel
- True
-
-
- 1
- 2
4
5
GTK_FILL
@@ -2854,15 +3033,12 @@ I/O:
-
+
True
- 0
- label401
- True
+ 1
+ Password:
- 1
- 2
3
4
GTK_FILL
@@ -2870,15 +3046,37 @@ I/O:
-
+
True
- 0
- label401
- True
+ 1
+ Type:
+ True
+
+
+ GTK_FILL
+
+
+
+
+
+ True
+ 1
+ Address:
+
+
+ 1
+ 2
+ GTK_FILL
+
+
+
+
+
+ True
+ 1
+ Port:
- 1
- 2
2
3
GTK_FILL
@@ -2902,12 +3100,15 @@ I/O:
-
+
True
- 1
- Port:
+ 0
+ label401
+ True
+ 1
+ 2
2
3
GTK_FILL
@@ -2915,37 +3116,15 @@ I/O:
-
+
True
- 1
- Address:
-
-
- 1
- 2
- GTK_FILL
-
-
-
-
-
- True
- 1
- Type:
- True
-
-
- GTK_FILL
-
-
-
-
-
- True
- 1
- Password:
+ 0
+ label401
+ True
+ 1
+ 2
3
4
GTK_FILL
@@ -2953,18 +3132,35 @@ I/O:
-
+
True
- 1
- Keymap:
+ 0
+ keylabel
+ True
+ 1
+ 2
4
5
GTK_FILL
+
+
+ True
+ 0
+ label403
+ True
+
+
+ 1
+ 2
+
+ 1
+
+
@@ -2982,28 +3178,26 @@ I/O:
15
- 0
True
6
- end
+ GTK_BUTTONBOX_END
- gtk-remove
True
True
True
- False
+ gtk-remove
True
+ 0
False
False
- 0
@@ -3023,9 +3217,9 @@ I/O:
Graphics
+ tab
8
False
- tab
@@ -3035,7 +3229,7 @@ I/O:
True
0
- none
+ GTK_SHADOW_NONE
True
@@ -3049,17 +3243,6 @@ I/O:
2
8
4
-
-
- True
- 0
- Device Model:
-
-
- GTK_FILL
-
-
-
True
@@ -3075,6 +3258,17 @@ I/O:
1
+
+
+ True
+ 0
+ Device Model:
+
+
+ GTK_FILL
+
+
+
@@ -3092,28 +3286,26 @@ I/O:
15
- 0
True
6
- end
+ GTK_BUTTONBOX_END
- gtk-remove
True
True
True
- False
+ gtk-remove
True
+ 0
False
False
- 0
@@ -3133,9 +3325,9 @@ I/O:
Sound
+ tab
9
False
- tab
@@ -3145,7 +3337,7 @@ I/O:
True
0
- none
+ GTK_SHADOW_NONE
True
@@ -3159,52 +3351,17 @@ I/O:
8
4
-
- True
- 1
- Device Type:
-
-
- GTK_FILL
-
-
-
-
-
- True
- 1
- Target Port:
-
-
- 1
- 2
- GTK_FILL
-
-
-
-
-
- True
- 1
- Source Path:
-
-
- 2
- 3
- GTK_FILL
-
-
-
-
-
+
True
0
- label506
+ label508
True
1
2
+ 2
+ 3
GTK_FILL
@@ -3226,21 +3383,56 @@ I/O:
-
+
True
0
- label508
+ label506
True
1
2
+ GTK_FILL
+
+
+
+
+
+ True
+ 1
+ Source Path:
+
+
2
3
GTK_FILL
+
+
+ True
+ 1
+ Target Port:
+
+
+ 1
+ 2
+ GTK_FILL
+
+
+
+
+
+ True
+ 1
+ Device Type:
+
+
+ GTK_FILL
+
+
+
@@ -3258,28 +3450,26 @@ I/O:
15
- 0
True
6
- end
+ GTK_BUTTONBOX_END
- gtk-remove
True
True
True
- False
+ gtk-remove
True
+ 0
False
False
- 0
@@ -3299,9 +3489,9 @@ I/O:
Char
+ tab
10
False
- tab
@@ -3311,7 +3501,7 @@ I/O:
True
0
- none
+ GTK_SHADOW_NONE
True
@@ -3325,7 +3515,44 @@ I/O:
8
4
-
+
+ True
+ 1
+ Source Device:
+
+
+ 2
+ 3
+ GTK_FILL
+ GTK_FILL
+
+
+
+
+ True
+ 1
+ Device Type:
+
+
+ GTK_FILL
+
+
+
+
+
+ True
+ 1
+ Device Mode:
+
+
+ 1
+ 2
+ GTK_FILL
+
+
+
+
+
True
0
label
@@ -3333,8 +3560,6 @@ I/O:
1
2
- 2
- 3
@@ -3353,7 +3578,7 @@ I/O:
-
+
True
0
label
@@ -3361,44 +3586,9 @@ I/O:
1
2
-
-
-
-
-
- True
- 1
- Device Mode:
-
-
- 1
- 2
- GTK_FILL
-
-
-
-
-
- True
- 1
- Device Type:
-
-
- GTK_FILL
-
-
-
-
-
- True
- 1
- Source Device:
-
-
2
3
- GTK_FILL
- GTK_FILL
+
@@ -3418,28 +3608,26 @@ I/O:
15
- 0
True
6
- end
+ GTK_BUTTONBOX_END
- gtk-remove
True
True
True
- False
+ gtk-remove
True
+ 0
False
False
- 0
@@ -3459,9 +3647,9 @@ I/O:
Hostdev
+ tab
11
False
- tab
@@ -3485,9 +3673,9 @@ I/O:
Details
+ tab
1
False
- tab