Allow specifying 'model' when adding a net device to an existing VM.

This commit is contained in:
Cole Robinson
2009-01-22 17:00:10 -05:00
parent 9045b04119
commit a7fe46d5bf
2 changed files with 342 additions and 249 deletions

View File

@ -127,6 +127,13 @@ class vmmAddHardware(gobject.GObject):
device_list.add_attribute(text, 'text', 1)
device_list.add_attribute(text, 'sensitive', 2)
netmodel_list = self.window.get_widget("net-model")
netmodel_model = gtk.ListStore(str, str)
netmodel_list.set_model(netmodel_model)
text = gtk.CellRendererText()
netmodel_list.pack_start(text, True)
netmodel_list.add_attribute(text, 'text', 1)
target_list = self.window.get_widget("target-device")
target_model = gtk.ListStore(str, str, str, str)
target_list.set_model(target_model)
@ -192,6 +199,8 @@ class vmmAddHardware(gobject.GObject):
else:
dev_box.set_active(-1)
self.window.get_widget("net-model").set_active(0)
target_list = self.window.get_widget("target-device")
target_list.set_active(-1)
@ -351,6 +360,12 @@ class vmmAddHardware(gobject.GObject):
model = dev.get_model()
return ["bridge", model.get_value(dev.get_active_iter(), 0)]
def get_config_net_model(self):
model = self.window.get_widget("net-model")
modelxml = model.get_model().get_value(model.get_active_iter(), 0)
modelstr = model.get_model().get_value(model.get_active_iter(), 1)
return modelxml, modelstr
def get_config_macaddr(self):
macaddr = None
if self.window.get_widget("mac-address").get_active():
@ -370,6 +385,11 @@ class vmmAddHardware(gobject.GObject):
self.window.get_widget("storage-file-address-browse").set_sensitive(not remote)
elif page_number == PAGE_NETWORK:
netmodel = self.window.get_widget("net-model")
if netmodel.get_active() == -1:
self.populate_network_model_model(netmodel.get_model())
netmodel.set_active(0)
if remote:
self.window.get_widget("net-type-network").set_active(True)
self.window.get_widget("net-type-device").set_active(False)
@ -412,6 +432,8 @@ class vmmAddHardware(gobject.GObject):
self.window.get_widget("summary-mac-address").set_text(macaddr)
else:
self.window.get_widget("summary-mac-address").set_text("-")
model = self.get_config_net_model()[1]
self.window.get_widget("summary-net-model").set_text(model)
elif hwpage == PAGE_INPUT:
self.window.get_widget("summary-input").show()
inp = self.get_config_input()
@ -775,23 +797,25 @@ class vmmAddHardware(gobject.GObject):
return self.err.val_err(_("Invalid MAC address"), \
_("No MAC address was entered. Please enter a valid MAC address."))
try:
try:
self._dev = virtinst.VirtualNetworkInterface(macaddr=mac)
except ValueError, e:
return self.err.val_err(_("Invalid MAC address"), str(e))
model = self.get_config_net_model()[0]
try:
if net[0] == "bridge":
self._dev = virtinst.VirtualNetworkInterface(macaddr=mac,
type=net[0],
self._dev = virtinst.VirtualNetworkInterface(macaddr=mac,
type=net[0],
bridge=net[1])
elif net[0] == "network":
self._dev = virtinst.VirtualNetworkInterface(macaddr=mac,
type=net[0],
self._dev = virtinst.VirtualNetworkInterface(macaddr=mac,
type=net[0],
network=net[1])
else:
raise ValueError, _("Unsupported networking type") + net[0]
self._dev.model = model
except ValueError, e:
return self.err.val_err(_("Invalid Network Parameter"), \
str(e))
@ -842,6 +866,21 @@ class vmmAddHardware(gobject.GObject):
model.append([net.get_bridge(), "%s (%s)" % (net.get_name(), _("Not bridged")), False])
return (hasShared, brIndex)
def populate_network_model_model(self, model):
model.clear()
# [xml value, label]
model.append([None, _("Hypervisor default")])
if self.vm.is_hvm():
mod_list = [ "rtl8139", "ne2k_pci", "pcnet" ]
if self.vm.get_type().lower() == "kvm":
mod_list.append("e1000")
mod_list.append("virtio")
mod_list.sort()
for m in mod_list:
model.append([m, m])
def populate_target_device_model(self, model):
model.clear()
#[bus, device, icon, desc]

View File

@ -753,9 +753,32 @@
<child>
<widget class="GtkTable" id="table31">
<property name="visible">True</property>
<property name="n_rows">8</property>
<property name="n_rows">9</property>
<property name="n_columns">2</property>
<property name="row_spacing">6</property>
<child>
<widget class="GtkComboBox" id="net-model">
<property name="visible">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">8</property>
<property name="bottom_attach">9</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label6">
<property name="visible">True</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Device Model:</property>
</widget>
<packing>
<property name="top_attach">8</property>
<property name="bottom_attach">9</property>
<property name="x_options">GTK_FILL</property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="create-mac-address">
<property name="visible">True</property>
@ -1689,31 +1712,31 @@
<placeholder/>
</child>
<child>
<widget class="GtkLabel" id="label377">
<widget class="GtkLabel" id="summary-disk-size">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="ypad">5</property>
<property name="label" translatable="yes">&lt;b&gt;Storage&lt;/b&gt;</property>
<property name="use_markup">True</property>
<property name="label">5 GB</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="x_options">GTK_FILL</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label315">
<widget class="GtkLabel" id="summary-disk-image">
<property name="visible">True</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Disk size:</property>
<property name="use_markup">True</property>
<property name="xalign">0</property>
<property name="label">/xen/demo.img</property>
<property name="ellipsize">PANGO_ELLIPSIZE_MIDDLE</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="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>
@ -1735,11 +1758,104 @@
</packing>
</child>
<child>
<widget class="GtkLabel" id="summary-disk-image">
<widget class="GtkLabel" id="label315">
<property name="visible">True</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Disk size:</property>
<property name="use_markup">True</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="label377">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label">/xen/demo.img</property>
<property name="ellipsize">PANGO_ELLIPSIZE_MIDDLE</property>
<property name="ypad">5</property>
<property name="label" translatable="yes">&lt;b&gt;Storage&lt;/b&gt;</property>
<property name="use_markup">True</property>
</widget>
<packing>
<property name="right_attach">3</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
</widget>
</child>
<child>
<widget class="GtkTable" id="summary-network">
<property name="visible">True</property>
<property name="border_width">6</property>
<property name="n_rows">5</property>
<property name="n_columns">3</property>
<property name="column_spacing">3</property>
<property name="row_spacing">3</property>
<child>
<widget class="GtkLabel" id="summary-net-model">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label">-</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="x_options">GTK_FILL</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label7">
<property name="visible">True</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Model:</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>
</packing>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<widget class="GtkLabel" id="label378">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="ypad">5</property>
<property name="label" translatable="yes">&lt;b&gt;Network&lt;/b&gt;</property>
<property name="use_markup">True</property>
</widget>
<packing>
<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="summary-net-type">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Shared Physical Device</property>
</widget>
<packing>
<property name="left_attach">2</property>
@ -1751,81 +1867,16 @@
</packing>
</child>
<child>
<widget class="GtkLabel" id="summary-disk-size">
<widget class="GtkLabel" id="summary-net-target">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label">5 GB</property>
<property name="label">eth0</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="y_options"></property>
</packing>
</child>
</widget>
</child>
<child>
<widget class="GtkTable" id="summary-network">
<property name="visible">True</property>
<property name="border_width">6</property>
<property name="n_rows">4</property>
<property name="n_columns">3</property>
<property name="column_spacing">3</property>
<property name="row_spacing">3</property>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<widget class="GtkLabel" id="summary-mac-address">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label">-</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</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="label387">
<property name="visible">True</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">MAC address:</property>
<property name="use_markup">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="label381">
<property name="visible">True</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Target:</property>
<property name="use_markup">True</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>
@ -1847,14 +1898,15 @@
</packing>
</child>
<child>
<widget class="GtkLabel" id="summary-net-target">
<widget class="GtkLabel" id="label381">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label">eth0</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Target:</property>
<property name="use_markup">True</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<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>
@ -1862,30 +1914,32 @@
</packing>
</child>
<child>
<widget class="GtkLabel" id="summary-net-type">
<widget class="GtkLabel" id="label387">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Shared Physical Device</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">MAC address:</property>
<property name="use_markup">True</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="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="label378">
<widget class="GtkLabel" id="summary-mac-address">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="ypad">5</property>
<property name="label" translatable="yes">&lt;b&gt;Network&lt;/b&gt;</property>
<property name="use_markup">True</property>
<property name="label">-</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</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>
@ -1910,15 +1964,43 @@
<placeholder/>
</child>
<child>
<widget class="GtkLabel" id="label400">
<widget class="GtkLabel" id="label396">
<property name="visible">True</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Mode:</property>
<property name="xalign">0</property>
<property name="ypad">5</property>
<property name="label" translatable="yes">&lt;b&gt;Pointer&lt;/b&gt;</property>
<property name="use_markup">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_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="summary-input-type">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">EvTouch Tablet</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="summary-input-mode">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Absolute</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
@ -1942,45 +2024,17 @@
</packing>
</child>
<child>
<widget class="GtkLabel" id="summary-input-mode">
<widget class="GtkLabel" id="label400">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Absolute</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</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="summary-input-type">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">EvTouch Tablet</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="label396">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="ypad">5</property>
<property name="label" translatable="yes">&lt;b&gt;Pointer&lt;/b&gt;</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Mode:</property>
<property name="use_markup">True</property>
</widget>
<packing>
<property name="right_attach">3</property>
<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>
@ -2014,107 +2068,43 @@
<placeholder/>
</child>
<child>
<widget class="GtkLabel" id="summary-graphics-keymap">
<widget class="GtkLabel" id="label419">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">keylabel</property>
<property name="ypad">5</property>
<property name="label" translatable="yes">&lt;b&gt;Graphics&lt;/b&gt;</property>
<property name="use_markup">True</property>
</widget>
<packing>
<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="summary-graphics-type">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">VNC</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">5</property>
<property name="bottom_attach">6</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="label5">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</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="top_attach">5</property>
<property name="bottom_attach">6</property>
<property name="x_options">GTK_FILL</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="summary-graphics-password">
<widget class="GtkLabel" id="summary-graphics-address">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">No</property>
<property name="label">127.0.0.1</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</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="summary-graphics-port">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Automatically allocated</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</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="label425">
<property name="visible">True</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Password:</property>
<property name="use_markup">True</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="label424">
<property name="visible">True</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Port:</property>
<property name="use_markup">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="label423">
<property name="visible">True</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Address:</property>
<property name="use_markup">True</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>
@ -2138,14 +2128,15 @@
</packing>
</child>
<child>
<widget class="GtkLabel" id="summary-graphics-address">
<widget class="GtkLabel" id="label423">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label">127.0.0.1</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Address:</property>
<property name="use_markup">True</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<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>
@ -2153,34 +2144,97 @@
</packing>
</child>
<child>
<widget class="GtkLabel" id="summary-graphics-type">
<widget class="GtkLabel" id="label424">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">VNC</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Port:</property>
<property name="use_markup">True</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="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="label419">
<widget class="GtkLabel" id="label425">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="ypad">5</property>
<property name="label" translatable="yes">&lt;b&gt;Graphics&lt;/b&gt;</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Password:</property>
<property name="use_markup">True</property>
</widget>
<packing>
<property name="right_attach">3</property>
<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="summary-graphics-port">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Automatically allocated</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</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="summary-graphics-password">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">No</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</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="label5">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</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="top_attach">5</property>
<property name="bottom_attach">6</property>
<property name="x_options">GTK_FILL</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="summary-graphics-keymap">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">keylabel</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">5</property>
<property name="bottom_attach">6</property>
<property name="x_options">GTK_FILL</property>
</packing>
</child>
</widget>
<packing>
<property name="position">3</property>
@ -2201,7 +2255,7 @@
<child>
<widget class="GtkLabel" id="step6">
<property name="visible">True</property>
<property name="label" translatable="no">Finish</property>
<property name="label">Finish</property>
</widget>
<packing>
<property name="type">tab</property>