Add a smaller helper for self.window.get_widget

Saves us from having crazy long lines in a few places, and less characters
to type!
This commit is contained in:
Cole Robinson 2011-07-14 13:13:13 -04:00
parent 25f5bc90a7
commit a84d10cee8
19 changed files with 1277 additions and 1303 deletions

View File

@ -107,21 +107,21 @@ class vmmAddHardware(vmmGObjectUI):
self.bind_escape_key_close() self.bind_escape_key_close()
# XXX: Help docs useless/out of date # XXX: Help docs useless/out of date
self.window.get_widget("create-help").hide() self.widget("create-help").hide()
finish_img = gtk.image_new_from_stock(gtk.STOCK_QUIT, finish_img = gtk.image_new_from_stock(gtk.STOCK_QUIT,
gtk.ICON_SIZE_BUTTON) gtk.ICON_SIZE_BUTTON)
self.window.get_widget("create-finish").set_image(finish_img) self.widget("create-finish").set_image(finish_img)
self.set_initial_state() self.set_initial_state()
hwlist = self.window.get_widget("hardware-list") hwlist = self.widget("hardware-list")
hwlist.get_selection().connect("changed", self.hw_selected) hwlist.get_selection().connect("changed", self.hw_selected)
def update_doc(self, ignore1, ignore2, param): def update_doc(self, ignore1, ignore2, param):
doc = self._build_doc_str(param) doc = self._build_doc_str(param)
self.window.get_widget("char-info").set_markup(doc) self.widget("char-info").set_markup(doc)
def update_doc_changed(self, ignore1, param): def update_doc_changed(self, ignore1, param):
# Wrapper for update_doc and 'changed' signal # Wrapper for update_doc and 'changed' signal
@ -188,17 +188,16 @@ class vmmAddHardware(vmmGObjectUI):
########################## ##########################
def set_initial_state(self): def set_initial_state(self):
notebook = self.window.get_widget("create-pages") notebook = self.widget("create-pages")
notebook.set_show_tabs(False) notebook.set_show_tabs(False)
black = gtk.gdk.color_parse("#000") black = gtk.gdk.color_parse("#000")
self.window.get_widget("page-title-box").modify_bg( self.widget("page-title-box").modify_bg(gtk.STATE_NORMAL, black)
gtk.STATE_NORMAL, black)
# Name, icon name, page number, is sensitive, tooltip, icon size, # Name, icon name, page number, is sensitive, tooltip, icon size,
# device type (serial/parallel)... # device type (serial/parallel)...
model = gtk.ListStore(str, str, int, bool, str, str) model = gtk.ListStore(str, str, int, bool, str, str)
hw_list = self.window.get_widget("hardware-list") hw_list = self.widget("hardware-list")
hw_list.set_model(model) hw_list.set_model(model)
hw_col = gtk.TreeViewColumn("Hardware") hw_col = gtk.TreeViewColumn("Hardware")
@ -218,16 +217,16 @@ class vmmAddHardware(vmmGObjectUI):
hw_list.append_column(hw_col) hw_list.append_column(hw_col)
# Virtual network list # Virtual network list
net_list = self.window.get_widget("net-list") net_list = self.widget("net-list")
bridge_box = self.window.get_widget("net-bridge-box") bridge_box = self.widget("net-bridge-box")
uihelpers.init_network_list(net_list, bridge_box) uihelpers.init_network_list(net_list, bridge_box)
# Network model list # Network model list
netmodel_list = self.window.get_widget("net-model") netmodel_list = self.widget("net-model")
uihelpers.build_netmodel_combo(self.vm, netmodel_list) uihelpers.build_netmodel_combo(self.vm, netmodel_list)
# Disk device type / bus # Disk device type / bus
target_list = self.window.get_widget("config-storage-devtype") target_list = self.widget("config-storage-devtype")
target_model = gtk.ListStore(str, str, str, str, int) target_model = gtk.ListStore(str, str, str, str, int)
target_list.set_model(target_model) target_list.set_model(target_model)
icon = gtk.CellRendererPixbuf() icon = gtk.CellRendererPixbuf()
@ -240,19 +239,19 @@ class vmmAddHardware(vmmGObjectUI):
target_list.add_attribute(text, 'text', 3) target_list.add_attribute(text, 'text', 3)
# Disk cache mode # Disk cache mode
cache_list = self.window.get_widget("config-storage-cache") cache_list = self.widget("config-storage-cache")
uihelpers.build_cache_combo(self.vm, cache_list) uihelpers.build_cache_combo(self.vm, cache_list)
# Disk format mode # Disk format mode
format_list = self.window.get_widget("config-storage-format") format_list = self.widget("config-storage-format")
uihelpers.build_storage_format_combo(self.vm, format_list) uihelpers.build_storage_format_combo(self.vm, format_list)
# Sparse tooltip # Sparse tooltip
sparse_info = self.window.get_widget("config-storage-nosparse-info") sparse_info = self.widget("config-storage-nosparse-info")
uihelpers.set_sparse_tooltip(sparse_info) uihelpers.set_sparse_tooltip(sparse_info)
# Input device type # Input device type
input_list = self.window.get_widget("input-type") input_list = self.widget("input-type")
input_model = gtk.ListStore(str, str, str, bool) input_model = gtk.ListStore(str, str, str, bool)
input_list.set_model(input_model) input_list.set_model(input_model)
text = gtk.CellRendererText() text = gtk.CellRendererText()
@ -261,7 +260,7 @@ class vmmAddHardware(vmmGObjectUI):
input_list.add_attribute(text, 'sensitive', 3) input_list.add_attribute(text, 'sensitive', 3)
# Graphics type # Graphics type
graphics_list = self.window.get_widget("graphics-type") graphics_list = self.widget("graphics-type")
graphics_model = gtk.ListStore(str, str) graphics_model = gtk.ListStore(str, str)
graphics_list.set_model(graphics_model) graphics_list.set_model(graphics_model)
text = gtk.CellRendererText() text = gtk.CellRendererText()
@ -269,12 +268,12 @@ class vmmAddHardware(vmmGObjectUI):
graphics_list.add_attribute(text, 'text', 0) graphics_list.add_attribute(text, 'text', 0)
# Sound model list # Sound model list
sound_list = self.window.get_widget("sound-model") sound_list = self.widget("sound-model")
uihelpers.build_sound_combo(self.vm, sound_list) uihelpers.build_sound_combo(self.vm, sound_list)
# Host device list # Host device list
# model = [ Description, nodedev name ] # model = [ Description, nodedev name ]
host_dev = self.window.get_widget("host-device") host_dev = self.widget("host-device")
host_dev_model = gtk.ListStore(str, str) host_dev_model = gtk.ListStore(str, str)
host_dev.set_model(host_dev_model) host_dev.set_model(host_dev_model)
@ -286,11 +285,11 @@ class vmmAddHardware(vmmGObjectUI):
host_dev.append_column(host_col) host_dev.append_column(host_col)
# Video device # Video device
video_dev = self.window.get_widget("video-model") video_dev = self.widget("video-model")
uihelpers.build_video_combo(self.vm, video_dev) uihelpers.build_video_combo(self.vm, video_dev)
# Character dev mode # Character dev mode
char_mode = self.window.get_widget("char-mode") char_mode = self.widget("char-mode")
# Mode name, desc # Mode name, desc
char_mode_model = gtk.ListStore(str, str) char_mode_model = gtk.ListStore(str, str)
char_mode.set_model(char_mode_model) char_mode.set_model(char_mode_model)
@ -302,19 +301,18 @@ class vmmAddHardware(vmmGObjectUI):
desc = VirtualCharDevice.get_char_mode_desc(t) desc = VirtualCharDevice.get_char_mode_desc(t)
char_mode_model.append([t, desc + " (%s)" % t]) char_mode_model.append([t, desc + " (%s)" % t])
self.window.get_widget("char-info-box").modify_bg( self.widget("char-info-box").modify_bg(gtk.STATE_NORMAL,
gtk.STATE_NORMAL, gtk.gdk.color_parse("grey"))
gtk.gdk.color_parse("grey"))
# Watchdog widgets # Watchdog widgets
combo = self.window.get_widget("watchdog-model") combo = self.widget("watchdog-model")
uihelpers.build_watchdogmodel_combo(self.vm, combo) uihelpers.build_watchdogmodel_combo(self.vm, combo)
combo = self.window.get_widget("watchdog-action") combo = self.widget("watchdog-action")
uihelpers.build_watchdogaction_combo(self.vm, combo) uihelpers.build_watchdogaction_combo(self.vm, combo)
def simple_store_set(comboname, values): def simple_store_set(comboname, values):
combo = self.window.get_widget(comboname) combo = self.widget(comboname)
model = gtk.ListStore(str, str) model = gtk.ListStore(str, str)
combo.set_model(model) combo.set_model(model)
text = gtk.CellRendererText() text = gtk.CellRendererText()
@ -332,7 +330,7 @@ class vmmAddHardware(vmmGObjectUI):
self.show_pair_combo("fs-type", self.conn.is_openvz()) self.show_pair_combo("fs-type", self.conn.is_openvz())
# Smartcard widgets # Smartcard widgets
combo = self.window.get_widget("smartcard-mode") combo = self.widget("smartcard-mode")
uihelpers.build_smartcard_mode_combo(self.vm, combo) uihelpers.build_smartcard_mode_combo(self.vm, combo)
# Available HW options # Available HW options
@ -345,7 +343,7 @@ class vmmAddHardware(vmmGObjectUI):
storage_tooltip = _("Connection does not support storage" storage_tooltip = _("Connection does not support storage"
" management.") " management.")
hwlist = self.window.get_widget("hardware-list") hwlist = self.widget("hardware-list")
model = hwlist.get_model() model = hwlist.get_model()
model.clear() model.clear()
@ -402,33 +400,33 @@ class vmmAddHardware(vmmGObjectUI):
def reset_state(self): def reset_state(self):
# Storage init # Storage init
label_widget = self.window.get_widget("phys-hd-label") label_widget = self.widget("phys-hd-label")
label_widget.set_markup("") label_widget.set_markup("")
if not self.host_storage_timer: if not self.host_storage_timer:
self.host_storage_timer = self.safe_timeout_add(3 * 1000, self.host_storage_timer = self.safe_timeout_add(3 * 1000,
uihelpers.host_space_tick, uihelpers.host_space_tick,
self.conn, self.conn,
label_widget) label_widget)
self.window.get_widget("config-storage-create").set_active(True) self.widget("config-storage-create").set_active(True)
self.window.get_widget("config-storage-size").set_value(8) self.widget("config-storage-size").set_value(8)
self.window.get_widget("config-storage-entry").set_text("") self.widget("config-storage-entry").set_text("")
self.window.get_widget("config-storage-nosparse").set_active(True) self.widget("config-storage-nosparse").set_active(True)
# Don't specify by default, so we don't overwrite possibly working # Don't specify by default, so we don't overwrite possibly working
# libvirt detection # libvirt detection
self.window.get_widget("config-storage-format").child.set_text("") self.widget("config-storage-format").child.set_text("")
target_list = self.window.get_widget("config-storage-devtype") target_list = self.widget("config-storage-devtype")
self.populate_target_device_model(target_list.get_model()) self.populate_target_device_model(target_list.get_model())
if len(target_list.get_model()) > 0: if len(target_list.get_model()) > 0:
target_list.set_active(0) target_list.set_active(0)
# Network init # Network init
newmac = uihelpers.generate_macaddr(self.conn) newmac = uihelpers.generate_macaddr(self.conn)
self.window.get_widget("mac-address").set_active(bool(newmac)) self.widget("mac-address").set_active(bool(newmac))
self.window.get_widget("create-mac-address").set_text(newmac) self.widget("create-mac-address").set_text(newmac)
self.change_macaddr_use() self.change_macaddr_use()
net_list = self.window.get_widget("net-list") net_list = self.widget("net-list")
net_warn = self.window.get_widget("net-list-warn") net_warn = self.widget("net-list-warn")
uihelpers.populate_network_list(net_list, self.conn) uihelpers.populate_network_list(net_list, self.conn)
error = self.conn.netdev_error error = self.conn.netdev_error
@ -438,49 +436,49 @@ class vmmAddHardware(vmmGObjectUI):
else: else:
net_warn.hide() net_warn.hide()
netmodel = self.window.get_widget("net-model") netmodel = self.widget("net-model")
uihelpers.populate_netmodel_combo(self.vm, netmodel) uihelpers.populate_netmodel_combo(self.vm, netmodel)
netmodel.set_active(0) netmodel.set_active(0)
# Input device init # Input device init
input_box = self.window.get_widget("input-type") input_box = self.widget("input-type")
self.populate_input_model(input_box.get_model()) self.populate_input_model(input_box.get_model())
input_box.set_active(0) input_box.set_active(0)
# Graphics init # Graphics init
self.change_port_auto() self.change_port_auto()
graphics_box = self.window.get_widget("graphics-type") graphics_box = self.widget("graphics-type")
self.populate_graphics_model(graphics_box.get_model()) self.populate_graphics_model(graphics_box.get_model())
graphics_box.set_active(0) graphics_box.set_active(0)
self.window.get_widget("graphics-address").set_active(False) self.widget("graphics-address").set_active(False)
self.window.get_widget("graphics-port-auto").set_active(True) self.widget("graphics-port-auto").set_active(True)
self.window.get_widget("graphics-password").set_text("") self.widget("graphics-password").set_text("")
self.window.get_widget("graphics-keymap").set_text("") self.widget("graphics-keymap").set_text("")
self.window.get_widget("graphics-keymap-chk").set_active(True) self.widget("graphics-keymap-chk").set_active(True)
# Sound init # Sound init
sound_box = self.window.get_widget("sound-model") sound_box = self.widget("sound-model")
sound_box.set_active(0) sound_box.set_active(0)
# Char parameters # Char parameters
self.window.get_widget("char-device-type").set_active(0) self.widget("char-device-type").set_active(0)
self.window.get_widget("char-path").set_text("") self.widget("char-path").set_text("")
self.window.get_widget("char-host").set_text("127.0.0.1") self.widget("char-host").set_text("127.0.0.1")
self.window.get_widget("char-port").get_adjustment().value = 4555 self.widget("char-port").get_adjustment().value = 4555
self.window.get_widget("char-bind-host").set_text("127.0.0.1") self.widget("char-bind-host").set_text("127.0.0.1")
self.window.get_widget("char-bind-port").get_adjustment().value = 4556 self.widget("char-bind-port").get_adjustment().value = 4556
self.window.get_widget("char-use-telnet").set_active(False) self.widget("char-use-telnet").set_active(False)
self.window.get_widget("char-target-name").set_text("com.redhat.spice.0") self.widget("char-target-name").set_text("com.redhat.spice.0")
# FS params # FS params
self.window.get_widget("fs-type-combo").set_active(0) self.widget("fs-type-combo").set_active(0)
self.window.get_widget("fs-mode-combo").set_active(0) self.widget("fs-mode-combo").set_active(0)
self.window.get_widget("fs-source").set_text("") self.widget("fs-source").set_text("")
self.window.get_widget("fs-target").set_text("") self.widget("fs-target").set_text("")
# Hide all notebook pages, so the wizard isn't as big as the largest # Hide all notebook pages, so the wizard isn't as big as the largest
# page # page
notebook = self.window.get_widget("create-pages") notebook = self.widget("create-pages")
for page in range(notebook.get_n_pages()): for page in range(notebook.get_n_pages()):
widget = notebook.get_nth_page(page) widget = notebook.get_nth_page(page)
widget.hide() widget.hide()
@ -531,7 +529,7 @@ class vmmAddHardware(vmmGObjectUI):
model.append([_("Local SDL window"), "sdl"]) model.append([_("Local SDL window"), "sdl"])
def populate_host_device_model(self, devtype, devcap, subtype, subcap): def populate_host_device_model(self, devtype, devcap, subtype, subcap):
devlist = self.window.get_widget("host-device") devlist = self.widget("host-device")
model = devlist.get_model() model = devlist.get_model()
model.clear() model.clear()
subdevs = [] subdevs = []
@ -565,24 +563,24 @@ class vmmAddHardware(vmmGObjectUI):
# Disk getters # Disk getters
def is_default_storage(self): def is_default_storage(self):
return self.window.get_widget("config-storage-create").get_active() return self.widget("config-storage-create").get_active()
def get_storage_info(self): def get_storage_info(self):
path = None path = None
size = self.window.get_widget("config-storage-size").get_value() size = self.widget("config-storage-size").get_value()
sparse = not self.window.get_widget("config-storage-nosparse").get_active() sparse = not self.widget("config-storage-nosparse").get_active()
if self.is_default_storage(): if self.is_default_storage():
path = util.get_default_path(self.conn, path = util.get_default_path(self.conn,
self.vm.get_name()) self.vm.get_name())
logging.debug("Default storage path is: %s" % path) logging.debug("Default storage path is: %s" % path)
else: else:
path = self.window.get_widget("config-storage-entry").get_text() path = self.widget("config-storage-entry").get_text()
return (path, size, sparse) return (path, size, sparse)
def get_config_disk_target(self): def get_config_disk_target(self):
target = self.window.get_widget("config-storage-devtype") target = self.widget("config-storage-devtype")
model = target.get_model() model = target.get_model()
idx = target.get_active() idx = target.get_active()
if idx == -1: if idx == -1:
@ -593,19 +591,19 @@ class vmmAddHardware(vmmGObjectUI):
return bus, device return bus, device
def get_config_disk_cache(self, label=False): def get_config_disk_cache(self, label=False):
cache = self.window.get_widget("config-storage-cache") cache = self.widget("config-storage-cache")
idx = 0 idx = 0
if label: if label:
idx = 1 idx = 1
return cache.get_model()[cache.get_active()][idx] return cache.get_model()[cache.get_active()][idx]
def get_config_disk_format(self): def get_config_disk_format(self):
fmt = self.window.get_widget("config-storage-format") fmt = self.widget("config-storage-format")
return fmt.child.get_text() return fmt.child.get_text()
# Input getters # Input getters
def get_config_input(self): def get_config_input(self):
target = self.window.get_widget("input-type") target = self.widget("input-type")
label = target.get_model().get_value(target.get_active_iter(), 0) label = target.get_model().get_value(target.get_active_iter(), 0)
_type = target.get_model().get_value(target.get_active_iter(), 1) _type = target.get_model().get_value(target.get_active_iter(), 1)
bus = target.get_model().get_value(target.get_active_iter(), 2) bus = target.get_model().get_value(target.get_active_iter(), 2)
@ -613,37 +611,37 @@ class vmmAddHardware(vmmGObjectUI):
# Graphics getters # Graphics getters
def get_config_graphics(self): def get_config_graphics(self):
_type = self.window.get_widget("graphics-type") _type = self.widget("graphics-type")
if _type.get_active_iter() is None: if _type.get_active_iter() is None:
return None return None
return _type.get_model().get_value(_type.get_active_iter(), 1) return _type.get_model().get_value(_type.get_active_iter(), 1)
def get_config_graphics_port(self): def get_config_graphics_port(self):
port = self.window.get_widget("graphics-port") port = self.widget("graphics-port")
portAuto = self.window.get_widget("graphics-port-auto") portAuto = self.widget("graphics-port-auto")
if portAuto.get_active(): if portAuto.get_active():
return -1 return -1
return int(port.get_value()) return int(port.get_value())
def get_config_graphics_tls_port(self): def get_config_graphics_tls_port(self):
port = self.window.get_widget("graphics-tls-port") port = self.widget("graphics-tls-port")
portAuto = self.window.get_widget("graphics-port-auto") portAuto = self.widget("graphics-port-auto")
if portAuto.get_active(): if portAuto.get_active():
return -1 return -1
return int(port.get_value()) return int(port.get_value())
def get_config_graphics_address(self): def get_config_graphics_address(self):
addr = self.window.get_widget("graphics-address") addr = self.widget("graphics-address")
if addr.get_active(): if addr.get_active():
return "0.0.0.0" return "0.0.0.0"
return "127.0.0.1" return "127.0.0.1"
def get_config_graphics_password(self): def get_config_graphics_password(self):
pw = self.window.get_widget("graphics-password") pw = self.widget("graphics-password")
return pw.get_text() return pw.get_text()
def get_config_keymap(self): def get_config_keymap(self):
g = self.window.get_widget("graphics-keymap") g = self.widget("graphics-keymap")
if g.get_property("sensitive") and g.get_text() != "": if g.get_property("sensitive") and g.get_text() != "":
return g.get_text() return g.get_text()
else: else:
@ -651,8 +649,8 @@ class vmmAddHardware(vmmGObjectUI):
# Network getters # Network getters
def get_config_network(self): def get_config_network(self):
net_list = self.window.get_widget("net-list") net_list = self.widget("net-list")
bridge_ent = self.window.get_widget("net-bridge") bridge_ent = self.widget("net-bridge")
net_type, net_src = uihelpers.get_network_selection(net_list, net_type, net_src = uihelpers.get_network_selection(net_list,
bridge_ent) bridge_ent)
@ -660,7 +658,7 @@ class vmmAddHardware(vmmGObjectUI):
return net_type, net_src return net_type, net_src
def get_config_net_model(self): def get_config_net_model(self):
model = self.window.get_widget("net-model") model = self.widget("net-model")
if model.get_active_iter(): if model.get_active_iter():
modelxml = model.get_model().get_value(model.get_active_iter(), 0) modelxml = model.get_model().get_value(model.get_active_iter(), 0)
modelstr = model.get_model().get_value(model.get_active_iter(), 1) modelstr = model.get_model().get_value(model.get_active_iter(), 1)
@ -670,13 +668,13 @@ class vmmAddHardware(vmmGObjectUI):
def get_config_macaddr(self): def get_config_macaddr(self):
macaddr = None macaddr = None
if self.window.get_widget("mac-address").get_active(): if self.widget("mac-address").get_active():
macaddr = self.window.get_widget("create-mac-address").get_text() macaddr = self.widget("create-mac-address").get_text()
return macaddr return macaddr
# Sound getters # Sound getters
def get_config_sound_model(self): def get_config_sound_model(self):
model = self.window.get_widget("sound-model") model = self.widget("sound-model")
modelstr = model.get_model().get_value(model.get_active_iter(), 0) modelstr = model.get_model().get_value(model.get_active_iter(), 0)
return modelstr return modelstr
@ -691,35 +689,35 @@ class vmmAddHardware(vmmGObjectUI):
return usb_info return usb_info
def get_config_host_device_info(self): def get_config_host_device_info(self):
devrow = util.get_list_selection(self.window.get_widget("host-device")) devrow = util.get_list_selection(self.widget("host-device"))
if not devrow: if not devrow:
return [] return []
return devrow return devrow
# Video Getters # Video Getters
def get_config_video_model(self): def get_config_video_model(self):
modbox = self.window.get_widget("video-model") modbox = self.widget("video-model")
return modbox.get_model()[modbox.get_active()][0] return modbox.get_model()[modbox.get_active()][0]
# Watchdog getters # Watchdog getters
def get_config_watchdog_model(self): def get_config_watchdog_model(self):
modbox = self.window.get_widget("watchdog-model") modbox = self.widget("watchdog-model")
return modbox.get_model()[modbox.get_active()][0] return modbox.get_model()[modbox.get_active()][0]
def get_config_watchdog_action(self): def get_config_watchdog_action(self):
modbox = self.window.get_widget("watchdog-action") modbox = self.widget("watchdog-action")
return modbox.get_model()[modbox.get_active()][0] return modbox.get_model()[modbox.get_active()][0]
# FS getters # FS getters
def get_config_fs_mode(self): def get_config_fs_mode(self):
name = "fs-mode-combo" name = "fs-mode-combo"
combo = self.window.get_widget(name) combo = self.widget(name)
if not combo.get_property("visible"): if not combo.get_property("visible"):
return None return None
return combo.get_model()[combo.get_active()][0] return combo.get_model()[combo.get_active()][0]
def get_config_fs_type(self): def get_config_fs_type(self):
name = "fs-type-combo" name = "fs-type-combo"
combo = self.window.get_widget(name) combo = self.widget(name)
if not combo.get_property("visible"): if not combo.get_property("visible"):
return None return None
@ -727,7 +725,7 @@ class vmmAddHardware(vmmGObjectUI):
# Smartcard getters # Smartcard getters
def get_config_smartcard_mode(self): def get_config_smartcard_mode(self):
mode = self.window.get_widget("smartcard-mode") mode = self.widget("smartcard-mode")
modestr = mode.get_model().get_value(mode.get_active_iter(), 0) modestr = mode.get_model().get_value(mode.get_active_iter(), 0)
return modestr return modestr
@ -736,14 +734,14 @@ class vmmAddHardware(vmmGObjectUI):
################ ################
def set_hw_selection(self, page): def set_hw_selection(self, page):
util.set_list_selection(self.window.get_widget("hardware-list"), page) util.set_list_selection(self.widget("hardware-list"), page)
def get_hw_selection(self): def get_hw_selection(self):
return util.get_list_selection(self.window.get_widget("hardware-list")) return util.get_list_selection(self.widget("hardware-list"))
def update_char_device_type_model(self): def update_char_device_type_model(self):
# Char device type # Char device type
char_devtype = self.window.get_widget("char-device-type") char_devtype = self.widget("char-device-type")
dev_type = self.get_char_type() dev_type = self.get_char_type()
# Type name, desc # Type name, desc
char_devtype_model = gtk.ListStore(str, str) char_devtype_model = gtk.ListStore(str, str)
@ -761,7 +759,7 @@ class vmmAddHardware(vmmGObjectUI):
def hw_selected(self, src=None): def hw_selected(self, src=None):
ignore = src ignore = src
self._dev = None self._dev = None
notebook = self.window.get_widget("create-pages") notebook = self.widget("create-pages")
row = self.get_hw_selection() row = self.get_hw_selection()
if not row: if not row:
@ -774,11 +772,11 @@ class vmmAddHardware(vmmGObjectUI):
if not sens: if not sens:
page = PAGE_ERROR page = PAGE_ERROR
self.window.get_widget("hardware-info").set_text(msg) self.widget("hardware-info").set_text(msg)
if page == PAGE_CHAR: if page == PAGE_CHAR:
self.update_char_device_type_model() self.update_char_device_type_model()
devtype = self.window.get_widget("char-device-type") devtype = self.widget("char-device-type")
self.change_char_device_type(devtype) self.change_char_device_type(devtype)
if page == PAGE_HOSTDEV: if page == PAGE_HOSTDEV:
@ -792,7 +790,7 @@ class vmmAddHardware(vmmGObjectUI):
notebook.set_current_page(page) notebook.set_current_page(page)
def finish(self, ignore=None): def finish(self, ignore=None):
notebook = self.window.get_widget("create-pages") notebook = self.widget("create-pages")
try: try:
if self.validate(notebook.get_current_page()) == False: if self.validate(notebook.get_current_page()) == False:
return return
@ -823,63 +821,63 @@ class vmmAddHardware(vmmGObjectUI):
self.close() self.close()
def show_pair_combo(self, basename, show_combo): def show_pair_combo(self, basename, show_combo):
combo = self.window.get_widget(basename + "-combo") combo = self.widget(basename + "-combo")
label = self.window.get_widget(basename + "-label") label = self.widget(basename + "-label")
combo.set_property("visible", show_combo) combo.set_property("visible", show_combo)
label.set_property("visible", not show_combo) label.set_property("visible", not show_combo)
# Storage listeners # Storage listeners
def browse_storage(self, ignore1): def browse_storage(self, ignore1):
self._browse_file(self.window.get_widget("config-storage-entry")) self._browse_file(self.widget("config-storage-entry"))
def toggle_storage_select(self, src): def toggle_storage_select(self, src):
act = src.get_active() act = src.get_active()
self.window.get_widget("config-storage-browse-box").set_sensitive(act) self.widget("config-storage-browse-box").set_sensitive(act)
def set_disk_storage_path(self, ignore, path): def set_disk_storage_path(self, ignore, path):
self.window.get_widget("config-storage-entry").set_text(path) self.widget("config-storage-entry").set_text(path)
# Network listeners # Network listeners
def change_macaddr_use(self, ignore=None): def change_macaddr_use(self, ignore=None):
if self.window.get_widget("mac-address").get_active(): if self.widget("mac-address").get_active():
self.window.get_widget("create-mac-address").set_sensitive(True) self.widget("create-mac-address").set_sensitive(True)
else: else:
self.window.get_widget("create-mac-address").set_sensitive(False) self.widget("create-mac-address").set_sensitive(False)
# Graphics listeners # Graphics listeners
def change_graphics_type(self, ignore=None): def change_graphics_type(self, ignore=None):
graphics = self.get_config_graphics() graphics = self.get_config_graphics()
if graphics in ["vnc", "spice"]: if graphics in ["vnc", "spice"]:
self.window.get_widget("graphics-port-auto").set_sensitive(True) self.widget("graphics-port-auto").set_sensitive(True)
self.window.get_widget("graphics-address").set_sensitive(True) self.widget("graphics-address").set_sensitive(True)
self.window.get_widget("graphics-password").set_sensitive(True) self.widget("graphics-password").set_sensitive(True)
self.window.get_widget("graphics-keymap-chk").set_sensitive(True) self.widget("graphics-keymap-chk").set_sensitive(True)
self.change_port_auto() self.change_port_auto()
else: else:
self.window.get_widget("graphics-port").set_sensitive(False) self.widget("graphics-port").set_sensitive(False)
self.window.get_widget("graphics-tls-port").set_sensitive(False) self.widget("graphics-tls-port").set_sensitive(False)
self.window.get_widget("graphics-port-auto").set_sensitive(False) self.widget("graphics-port-auto").set_sensitive(False)
self.window.get_widget("graphics-address").set_sensitive(False) self.widget("graphics-address").set_sensitive(False)
self.window.get_widget("graphics-password").set_sensitive(False) self.widget("graphics-password").set_sensitive(False)
self.window.get_widget("graphics-keymap-chk").set_sensitive(False) self.widget("graphics-keymap-chk").set_sensitive(False)
self.window.get_widget("graphics-keymap").set_sensitive(False) self.widget("graphics-keymap").set_sensitive(False)
def change_port_auto(self, ignore=None): def change_port_auto(self, ignore=None):
graphics = self.get_config_graphics() graphics = self.get_config_graphics()
tls_enable = graphics == "spice" tls_enable = graphics == "spice"
if self.window.get_widget("graphics-port-auto").get_active(): if self.widget("graphics-port-auto").get_active():
self.window.get_widget("graphics-port").set_sensitive(False) self.widget("graphics-port").set_sensitive(False)
self.window.get_widget("graphics-tls-port").set_sensitive(False) self.widget("graphics-tls-port").set_sensitive(False)
else: else:
self.window.get_widget("graphics-port").set_sensitive(True) self.widget("graphics-port").set_sensitive(True)
self.window.get_widget("graphics-tls-port").set_sensitive(tls_enable) self.widget("graphics-tls-port").set_sensitive(tls_enable)
def change_keymap(self, ignore=None): def change_keymap(self, ignore=None):
if self.window.get_widget("graphics-keymap-chk").get_active(): if self.widget("graphics-keymap-chk").get_active():
self.window.get_widget("graphics-keymap").set_sensitive(False) self.widget("graphics-keymap").set_sensitive(False)
else: else:
self.window.get_widget("graphics-keymap").set_sensitive(True) self.widget("graphics-keymap").set_sensitive(True)
# Char device listeners # Char device listeners
def get_char_type(self): def get_char_type(self):
@ -928,7 +926,7 @@ class vmmAddHardware(vmmGObjectUI):
title = self.dev_to_title(page) title = self.dev_to_title(page)
markup = ("""<span weight="heavy" size="xx-large" """ markup = ("""<span weight="heavy" size="xx-large" """
"""foreground="#FFF">%s</span>""") % title """foreground="#FFF">%s</span>""") % title
self.window.get_widget("page-title-label").set_markup(markup) self.widget("page-title-label").set_markup(markup)
def change_char_device_type(self, src): def change_char_device_type(self, src):
self.update_doc(None, None, "char_type") self.update_doc(None, None, "char_type")
@ -950,21 +948,19 @@ class vmmAddHardware(vmmGObjectUI):
if make_visible: if make_visible:
show_something = True show_something = True
self.window.get_widget(widget_name).set_property("visible", self.widget(widget_name).set_property("visible", make_visible)
self.widget(widget_name + "-label").set_property("visible",
make_visible) make_visible)
self.window.get_widget(widget_name + "-label").set_property(
"visible", make_visible)
self.window.get_widget("char-param-box").set_property("visible", self.widget("char-param-box").set_property("visible", show_something)
show_something)
has_mode = self._dev.supports_property("source_mode") has_mode = self._dev.supports_property("source_mode")
if has_mode and self.window.get_widget("char-mode").get_active() == -1: if has_mode and self.widget("char-mode").get_active() == -1:
self.window.get_widget("char-mode").set_active(0) self.widget("char-mode").set_active(0)
# FS listeners # FS listeners
def browse_fs_source(self, ignore1): def browse_fs_source(self, ignore1):
self._browse_file(self.window.get_widget("fs-source"), isdir=True) self._browse_file(self.widget("fs-source"), isdir=True)
def change_fs_type(self, src): def change_fs_type(self, src):
idx = src.get_active() idx = src.get_active()
@ -980,8 +976,8 @@ class vmmAddHardware(vmmGObjectUI):
source_text = _("_Source path:") source_text = _("_Source path:")
show_mode_combo = self.conn.is_qemu() show_mode_combo = self.conn.is_qemu()
self.window.get_widget("fs-source-title").set_text(source_text) self.widget("fs-source-title").set_text(source_text)
self.window.get_widget("fs-source-title").set_use_underline(True) self.widget("fs-source-title").set_use_underline(True)
self.show_pair_combo("fs-mode", show_mode_combo) self.show_pair_combo("fs-mode", show_mode_combo)
@ -1257,20 +1253,20 @@ class vmmAddHardware(vmmGObjectUI):
def validate_page_char(self): def validate_page_char(self):
chartype = self.get_char_type() chartype = self.get_char_type()
devbox = self.window.get_widget("char-device-type") devbox = self.widget("char-device-type")
devtype = devbox.get_model()[devbox.get_active()][0] devtype = devbox.get_model()[devbox.get_active()][0]
conn = self.conn.vmm conn = self.conn.vmm
devclass = VirtualCharDevice.get_dev_instance(conn, chartype, devtype) devclass = VirtualCharDevice.get_dev_instance(conn, chartype, devtype)
source_path = self.window.get_widget("char-path").get_text() source_path = self.widget("char-path").get_text()
source_host = self.window.get_widget("char-host").get_text() source_host = self.widget("char-host").get_text()
bind_host = self.window.get_widget("char-bind-host").get_text() bind_host = self.widget("char-bind-host").get_text()
source_port = self.window.get_widget("char-port").get_adjustment().value source_port = self.widget("char-port").get_adjustment().value
bind_port = self.window.get_widget("char-bind-port").get_adjustment().value bind_port = self.widget("char-bind-port").get_adjustment().value
target_name = self.window.get_widget("char-target-name").get_text() target_name = self.widget("char-target-name").get_text()
if self.window.get_widget("char-use-telnet").get_active(): if self.widget("char-use-telnet").get_active():
protocol = VirtualCharDevice.CHAR_PROTOCOL_TELNET protocol = VirtualCharDevice.CHAR_PROTOCOL_TELNET
else: else:
protocol = VirtualCharDevice.CHAR_PROTOCOL_RAW protocol = VirtualCharDevice.CHAR_PROTOCOL_RAW
@ -1324,8 +1320,8 @@ class vmmAddHardware(vmmGObjectUI):
def validate_page_filesystem(self): def validate_page_filesystem(self):
conn = self.conn.vmm conn = self.conn.vmm
source = self.window.get_widget("fs-source").get_text() source = self.widget("fs-source").get_text()
target = self.window.get_widget("fs-target").get_text() target = self.widget("fs-target").get_text()
mode = self.get_config_fs_mode() mode = self.get_config_fs_mode()
fstype = self.get_config_fs_type() fstype = self.get_config_fs_type()
@ -1380,7 +1376,7 @@ class vmmAddHardware(vmmGObjectUI):
def show_help(self, src_ignore): def show_help(self, src_ignore):
# help to show depends on the notebook page, yahoo # help to show depends on the notebook page, yahoo
page = self.window.get_widget("create-pages").get_current_page() page = self.widget("create-pages").get_current_page()
if page == PAGE_ERROR: if page == PAGE_ERROR:
self.emit("action-show-help", "virt-manager-create-wizard") self.emit("action-show-help", "virt-manager-create-wizard")
elif page == PAGE_DISK: elif page == PAGE_DISK:

View File

@ -109,17 +109,17 @@ class vmmAsyncJob(vmmGObjectUI):
self.cancel_args = cancel_args or [] self.cancel_args = cancel_args or []
self.cancel_args = [self] + self.cancel_args self.cancel_args = [self] + self.cancel_args
if self.cancel_job: if self.cancel_job:
self.window.get_widget("cancel-async-job").show() self.widget("cancel-async-job").show()
else: else:
self.window.get_widget("cancel-async-job").hide() self.widget("cancel-async-job").hide()
self.job_canceled = False self.job_canceled = False
self._error_info = None self._error_info = None
self._data = None self._data = None
self.stage = self.window.get_widget("pbar-stage") self.stage = self.widget("pbar-stage")
self.pbar = self.window.get_widget("pbar") self.pbar = self.widget("pbar")
self.window.get_widget("pbar-text").set_text(text) self.widget("pbar-text").set_text(text)
self.topwin.set_transient_for(parent) self.topwin.set_transient_for(parent)
args = [self] + args args = [self] + args
@ -188,12 +188,12 @@ class vmmAsyncJob(vmmGObjectUI):
self.stage.set_text(text) self.stage.set_text(text)
def hide_warning(self): def hide_warning(self):
self.window.get_widget("warning-box").hide() self.widget("warning-box").hide()
def show_warning(self, summary): def show_warning(self, summary):
markup = "<small>%s</small>" % summary markup = "<small>%s</small>" % summary
self.window.get_widget("warning-box").show() self.widget("warning-box").show()
self.window.get_widget("warning-text").set_markup(markup) self.widget("warning-text").set_markup(markup)
def can_cancel(self): def can_cancel(self):
return bool(self.cancel_job) return bool(self.cancel_job)

View File

@ -204,11 +204,14 @@ class vmmGObjectUI(vmmGObject):
self.window = gtk.glade.XML(self.gladefile, self.window = gtk.glade.XML(self.gladefile,
self.windowname, self.windowname,
domain="virt-manager") domain="virt-manager")
self.topwin = self.window.get_widget(self.windowname) self.topwin = self.widget(self.windowname)
self.topwin.hide() self.topwin.hide()
self.err = virtManager.error.vmmErrorDialog(self.topwin) self.err = virtManager.error.vmmErrorDialog(self.topwin)
def widget(self, name):
return self.window.get_widget(name)
def cleanup(self): def cleanup(self):
vmmGObject.cleanup(self) vmmGObject.cleanup(self)
self.window = None self.window = None

View File

@ -44,7 +44,7 @@ class vmmChooseCD(vmmGObjectUI):
"on_cancel_clicked": self.close, "on_cancel_clicked": self.close,
}) })
self.window.get_widget("iso-image").set_active(True) self.widget("iso-image").set_active(True)
self.initialize_opt_media() self.initialize_opt_media()
self.reset_state() self.reset_state()
@ -77,21 +77,21 @@ class vmmChooseCD(vmmGObjectUI):
vmmGObjectUI.cleanup(self) vmmGObjectUI.cleanup(self)
def reset_state(self): def reset_state(self):
cd_path = self.window.get_widget("cd-path") cd_path = self.widget("cd-path")
use_cdrom = (cd_path.get_active() > -1) use_cdrom = (cd_path.get_active() > -1)
if use_cdrom: if use_cdrom:
self.window.get_widget("physical-media").set_active(True) self.widget("physical-media").set_active(True)
else: else:
self.window.get_widget("iso-image").set_active(True) self.widget("iso-image").set_active(True)
def ok(self, ignore1=None, ignore2=None): def ok(self, ignore1=None, ignore2=None):
path = None path = None
if self.window.get_widget("iso-image").get_active(): if self.widget("iso-image").get_active():
path = self.window.get_widget("iso-path").get_text() path = self.widget("iso-path").get_text()
else: else:
cd = self.window.get_widget("cd-path") cd = self.widget("cd-path")
idx = cd.get_active() idx = cd.get_active()
model = cd.get_model() model = cd.get_model()
if idx != -1: if idx != -1:
@ -112,14 +112,14 @@ class vmmChooseCD(vmmGObjectUI):
self.close() self.close()
def media_toggled(self, ignore1=None, ignore2=None): def media_toggled(self, ignore1=None, ignore2=None):
if self.window.get_widget("physical-media").get_active(): if self.widget("physical-media").get_active():
self.window.get_widget("cd-path").set_sensitive(True) self.widget("cd-path").set_sensitive(True)
self.window.get_widget("iso-path").set_sensitive(False) self.widget("iso-path").set_sensitive(False)
self.window.get_widget("iso-file-chooser").set_sensitive(False) self.widget("iso-file-chooser").set_sensitive(False)
else: else:
self.window.get_widget("cd-path").set_sensitive(False) self.widget("cd-path").set_sensitive(False)
self.window.get_widget("iso-path").set_sensitive(True) self.widget("iso-path").set_sensitive(True)
self.window.get_widget("iso-file-chooser").set_sensitive(True) self.widget("iso-file-chooser").set_sensitive(True)
def change_cd_path(self, ignore1=None, ignore2=None): def change_cd_path(self, ignore1=None, ignore2=None):
pass pass
@ -128,8 +128,8 @@ class vmmChooseCD(vmmGObjectUI):
self._browse_file() self._browse_file()
def initialize_opt_media(self): def initialize_opt_media(self):
widget = self.window.get_widget("cd-path") widget = self.widget("cd-path")
warn = self.window.get_widget("cd-path-warn") warn = self.widget("cd-path-warn")
error = self.conn.mediadev_error error = self.conn.mediadev_error
uihelpers.init_mediadev_combo(widget) uihelpers.init_mediadev_combo(widget)
@ -141,15 +141,14 @@ class vmmChooseCD(vmmGObjectUI):
else: else:
warn.hide() warn.hide()
self.window.get_widget("physical-media").set_sensitive(not bool(error)) self.widget("physical-media").set_sensitive(not bool(error))
if self.media_type == MEDIA_FLOPPY: if self.media_type == MEDIA_FLOPPY:
self.window.get_widget("physical-media").set_label( self.widget("physical-media").set_label(_("Floppy D_rive"))
_("Floppy D_rive")) self.widget("iso-image").set_label(_("Floppy _Image"))
self.window.get_widget("iso-image").set_label(_("Floppy _Image"))
def set_storage_path(self, src_ignore, path): def set_storage_path(self, src_ignore, path):
self.window.get_widget("iso-path").set_text(path) self.widget("iso-path").set_text(path)
def _browse_file(self): def _browse_file(self):
if self.storage_browser == None: if self.storage_browser == None:

View File

@ -169,10 +169,10 @@ class vmmCloneVM(vmmGObjectUI):
self.bind_escape_key_close() self.bind_escape_key_close()
# XXX: Help docs useless/out of date # XXX: Help docs useless/out of date
self.window.get_widget("clone-help").hide() self.widget("clone-help").hide()
finish_img = gtk.image_new_from_stock(gtk.STOCK_NEW, finish_img = gtk.image_new_from_stock(gtk.STOCK_NEW,
gtk.ICON_SIZE_BUTTON) gtk.ICON_SIZE_BUTTON)
self.window.get_widget("clone-ok").set_image(finish_img) self.widget("clone-ok").set_image(finish_img)
self.set_initial_state() self.set_initial_state()
@ -226,10 +226,9 @@ class vmmCloneVM(vmmGObjectUI):
def set_initial_state(self): def set_initial_state(self):
blue = gtk.gdk.color_parse("#0072A8") blue = gtk.gdk.color_parse("#0072A8")
self.window.get_widget("clone-header").modify_bg(gtk.STATE_NORMAL, self.widget("clone-header").modify_bg(gtk.STATE_NORMAL, blue)
blue)
box = self.window.get_widget("clone-vm-icon-box") box = self.widget("clone-vm-icon-box")
image = gtk.image_new_from_icon_name("vm_clone_wizard", image = gtk.image_new_from_icon_name("vm_clone_wizard",
gtk.ICON_SIZE_DIALOG) gtk.ICON_SIZE_DIALOG)
image.show() image.show()
@ -237,14 +236,14 @@ class vmmCloneVM(vmmGObjectUI):
# Populate state # Populate state
def reset_state(self): def reset_state(self):
self.window.get_widget("clone-cancel").grab_focus() self.widget("clone-cancel").grab_focus()
# Populate default clone values # Populate default clone values
self.setup_clone_info() self.setup_clone_info()
cd = self.clone_design cd = self.clone_design
self.window.get_widget("clone-orig-name").set_text(cd.original_guest) self.widget("clone-orig-name").set_text(cd.original_guest)
self.window.get_widget("clone-new-name").set_text(cd.clone_name) self.widget("clone-new-name").set_text(cd.clone_name)
# We need to determine which disks fail (and why). # We need to determine which disks fail (and why).
self.storage_list, self.target_list = self.check_all_storage() self.storage_list, self.target_list = self.check_all_storage()
@ -271,7 +270,7 @@ class vmmCloneVM(vmmGObjectUI):
return cd return cd
def populate_network_list(self): def populate_network_list(self):
net_box = self.window.get_widget("clone-network-box") net_box = self.widget("clone-network-box")
for c in net_box.get_children(): for c in net_box.get_children():
net_box.remove(c) net_box.remove(c)
c.destroy() c.destroy()
@ -337,9 +336,8 @@ class vmmCloneVM(vmmGObjectUI):
build_net_row(label, mac, newmac) build_net_row(label, mac, newmac)
no_net = bool(len(self.net_list.keys()) == 0) no_net = bool(len(self.net_list.keys()) == 0)
self.window.get_widget("clone-network-box").set_property("visible", self.widget("clone-network-box").set_property("visible", not no_net)
not no_net) self.widget("clone-no-net").set_property("visible", no_net)
self.window.get_widget("clone-no-net").set_property("visible", no_net)
def check_all_storage(self): def check_all_storage(self):
""" """
@ -447,7 +445,7 @@ class vmmCloneVM(vmmGObjectUI):
def set_paths_from_clone_name(self): def set_paths_from_clone_name(self):
cd = self.clone_design cd = self.clone_design
newname = self.window.get_widget("clone-new-name").get_text() newname = self.widget("clone-new-name").get_text()
if not newname: if not newname:
return return
@ -551,7 +549,7 @@ class vmmCloneVM(vmmGObjectUI):
disk[STORAGE_INFO_COMBO] = option_combo disk[STORAGE_INFO_COMBO] = option_combo
def populate_storage_lists(self): def populate_storage_lists(self):
storage_box = self.window.get_widget("clone-storage-box") storage_box = self.widget("clone-storage-box")
for c in storage_box.get_children(): for c in storage_box.get_children():
storage_box.remove(c) storage_box.remove(c)
c.destroy() c.destroy()
@ -562,16 +560,15 @@ class vmmCloneVM(vmmGObjectUI):
num_c = min(len(self.target_list), 3) num_c = min(len(self.target_list), 3)
if num_c: if num_c:
scroll = self.window.get_widget("clone-storage-scroll") scroll = self.widget("clone-storage-scroll")
scroll.set_size_request(-1, 80 * num_c) scroll.set_size_request(-1, 80 * num_c)
storage_box.show_all() storage_box.show_all()
no_storage = not bool(len(self.target_list)) no_storage = not bool(len(self.target_list))
self.window.get_widget("clone-storage-box").set_property("visible", self.widget("clone-storage-box").set_property("visible",
not no_storage) not no_storage)
self.window.get_widget("clone-no-storage-pass").set_property( self.widget("clone-no-storage-pass").set_property("visible",
"visible", no_storage)
no_storage)
skip_targets = [] skip_targets = []
new_disks = [] new_disks = []
@ -598,7 +595,7 @@ class vmmCloneVM(vmmGObjectUI):
tooltip = _("One or more disks cannot be cloned or shared.") tooltip = _("One or more disks cannot be cloned or shared.")
break break
ok_button = self.window.get_widget("clone-ok") ok_button = self.widget("clone-ok")
ok_button.set_sensitive(clone) ok_button.set_sensitive(clone)
util.tooltip_wrapper(ok_button, tooltip) util.tooltip_wrapper(ok_button, tooltip)
@ -742,7 +739,7 @@ class vmmCloneVM(vmmGObjectUI):
# Listeners # Listeners
def validate(self): def validate(self):
self.set_paths_from_clone_name() self.set_paths_from_clone_name()
name = self.window.get_widget("clone-new-name").get_text() name = self.widget("clone-new-name").get_text()
# Make another clone_design # Make another clone_design
cd = self.build_new_clone_design(name) cd = self.build_new_clone_design(name)

View File

@ -109,43 +109,42 @@ class vmmConnect(vmmGObjectUI):
def set_initial_state(self): def set_initial_state(self):
stock_img = gtk.image_new_from_stock(gtk.STOCK_CONNECT, stock_img = gtk.image_new_from_stock(gtk.STOCK_CONNECT,
gtk.ICON_SIZE_BUTTON) gtk.ICON_SIZE_BUTTON)
self.window.get_widget("connect").set_image(stock_img) self.widget("connect").set_image(stock_img)
self.window.get_widget("connect").grab_default() self.widget("connect").grab_default()
# Hostname combo box entry # Hostname combo box entry
hostListModel = gtk.ListStore(str, str, str) hostListModel = gtk.ListStore(str, str, str)
host = self.window.get_widget("hostname") host = self.widget("hostname")
host.set_model(hostListModel) host.set_model(hostListModel)
host.set_text_column(2) host.set_text_column(2)
hostListModel.set_sort_column_id(2, gtk.SORT_ASCENDING) hostListModel.set_sort_column_id(2, gtk.SORT_ASCENDING)
self.window.get_widget("hostname").child.connect("changed", self.widget("hostname").child.connect("changed", self.hostname_changed)
self.hostname_changed)
def reset_state(self): def reset_state(self):
self.set_default_hypervisor() self.set_default_hypervisor()
self.window.get_widget("connection").set_active(0) self.widget("connection").set_active(0)
self.window.get_widget("autoconnect").set_sensitive(True) self.widget("autoconnect").set_sensitive(True)
self.window.get_widget("autoconnect").set_active(True) self.widget("autoconnect").set_active(True)
self.window.get_widget("hostname").get_model().clear() self.widget("hostname").get_model().clear()
self.window.get_widget("hostname").child.set_text("") self.widget("hostname").child.set_text("")
self.window.get_widget("connect-remote").set_active(False) self.widget("connect-remote").set_active(False)
self.window.get_widget("username-entry").set_text("") self.widget("username-entry").set_text("")
self.stop_browse() self.stop_browse()
self.connect_remote_toggled(self.window.get_widget("connect-remote")) self.connect_remote_toggled(self.widget("connect-remote"))
self.populate_uri() self.populate_uri()
def is_remote(self): def is_remote(self):
# Whether user is requesting a remote connection # Whether user is requesting a remote connection
return self.window.get_widget("connect-remote").get_active() return self.widget("connect-remote").get_active()
def set_default_hypervisor(self): def set_default_hypervisor(self):
default = virtinst.util.default_connection() default = virtinst.util.default_connection()
if default is None: if default is None:
self.window.get_widget("hypervisor").set_active(-1) self.widget("hypervisor").set_active(-1)
elif default.startswith("xen"): elif default.startswith("xen"):
self.window.get_widget("hypervisor").set_active(0) self.widget("hypervisor").set_active(0)
elif default.startswith("qemu"): elif default.startswith("qemu"):
self.window.get_widget("hypervisor").set_active(1) self.widget("hypervisor").set_active(1)
def add_service(self, interface, protocol, name, type, domain, flags): def add_service(self, interface, protocol, name, type, domain, flags):
ignore = flags ignore = flags
@ -171,7 +170,7 @@ class vmmConnect(vmmGObjectUI):
ignore = type ignore = type
try: try:
model = self.window.get_widget("hostname").get_model() model = self.widget("hostname").get_model()
name = str(name) name = str(name)
for row in model: for row in model:
if row[0] == name: if row[0] == name:
@ -191,7 +190,7 @@ class vmmConnect(vmmGObjectUI):
ignore = port ignore = port
try: try:
model = self.window.get_widget("hostname").get_model() model = self.widget("hostname").get_model()
for row in model: for row in model:
if row[2] == str(name): if row[2] == str(name):
# Already present in list # Already present in list
@ -246,7 +245,7 @@ class vmmConnect(vmmGObjectUI):
if not entry: if not entry:
entry = ip entry = ip
self.window.get_widget("hostname").child.set_text(entry) self.widget("hostname").child.set_text(entry)
def hostname_changed(self, src_ignore): def hostname_changed(self, src_ignore):
self.populate_uri() self.populate_uri()
@ -259,10 +258,10 @@ class vmmConnect(vmmGObjectUI):
def connect_remote_toggled(self, src_ignore): def connect_remote_toggled(self, src_ignore):
is_remote = self.is_remote() is_remote = self.is_remote()
self.window.get_widget("hostname").set_sensitive(is_remote) self.widget("hostname").set_sensitive(is_remote)
self.window.get_widget("connection").set_sensitive(is_remote) self.widget("connection").set_sensitive(is_remote)
self.window.get_widget("autoconnect").set_active(not is_remote) self.widget("autoconnect").set_active(not is_remote)
self.window.get_widget("username-entry").set_sensitive(is_remote) self.widget("username-entry").set_sensitive(is_remote)
if is_remote and self.can_browse: if is_remote and self.can_browse:
self.start_browse() self.start_browse()
else: else:
@ -277,18 +276,18 @@ class vmmConnect(vmmGObjectUI):
def populate_uri(self): def populate_uri(self):
uri = self.generate_uri() uri = self.generate_uri()
self.window.get_widget("uri-entry").set_text(uri) self.widget("uri-entry").set_text(uri)
def populate_default_user(self): def populate_default_user(self):
conn = self.window.get_widget("connection").get_active() conn = self.widget("connection").get_active()
default_user = default_conn_user(conn) default_user = default_conn_user(conn)
self.window.get_widget("username-entry").set_text(default_user) self.widget("username-entry").set_text(default_user)
def generate_uri(self): def generate_uri(self):
hv = self.window.get_widget("hypervisor").get_active() hv = self.widget("hypervisor").get_active()
conn = self.window.get_widget("connection").get_active() conn = self.widget("connection").get_active()
host = self.window.get_widget("hostname").child.get_text() host = self.widget("hostname").child.get_text()
user = self.window.get_widget("username-entry").get_text() user = self.widget("username-entry").get_text()
is_remote = self.is_remote() is_remote = self.is_remote()
hvstr = "" hvstr = ""
@ -324,7 +323,7 @@ class vmmConnect(vmmGObjectUI):
def validate(self): def validate(self):
is_remote = self.is_remote() is_remote = self.is_remote()
host = self.window.get_widget("hostname").child.get_text() host = self.widget("hostname").child.get_text()
if is_remote and not host: if is_remote and not host:
return self.err.val_err(_("A hostname is required for " return self.err.val_err(_("A hostname is required for "
@ -338,8 +337,8 @@ class vmmConnect(vmmGObjectUI):
readonly = False readonly = False
auto = False auto = False
if self.window.get_widget("autoconnect").get_property("sensitive"): if self.widget("autoconnect").get_property("sensitive"):
auto = self.window.get_widget("autoconnect").get_active() auto = self.widget("autoconnect").get_active()
uri = self.generate_uri() uri = self.generate_uri()
logging.debug("Generate URI=%s, auto=%s, readonly=%s" % logging.debug("Generate URI=%s, auto=%s, readonly=%s" %

View File

@ -536,7 +536,7 @@ class vmmConsolePages(vmmGObjectUI):
self.windowname = "vmm-details" self.windowname = "vmm-details"
self.window = window self.window = window
self.topwin = self.window.get_widget(self.windowname) self.topwin = self.widget(self.windowname)
self.err = vmmErrorDialog(self.topwin) self.err = vmmErrorDialog(self.topwin)
self.pointer_is_grabbed = False self.pointer_is_grabbed = False
@ -565,13 +565,12 @@ class vmmConsolePages(vmmGObjectUI):
finish_img = gtk.image_new_from_stock(gtk.STOCK_YES, finish_img = gtk.image_new_from_stock(gtk.STOCK_YES,
gtk.ICON_SIZE_BUTTON) gtk.ICON_SIZE_BUTTON)
self.window.get_widget("console-auth-login").set_image(finish_img) self.widget("console-auth-login").set_image(finish_img)
# Make viewer widget background always be black # Make viewer widget background always be black
black = gtk.gdk.Color(0, 0, 0) black = gtk.gdk.Color(0, 0, 0)
self.window.get_widget("console-vnc-viewport").modify_bg( self.widget("console-vnc-viewport").modify_bg(gtk.STATE_NORMAL,
gtk.STATE_NORMAL, black)
black)
# Signals are added by vmmDetails. Don't use signal_autoconnect here # Signals are added by vmmDetails. Don't use signal_autoconnect here
# or it changes will be overwritten # or it changes will be overwritten
@ -579,7 +578,7 @@ class vmmConsolePages(vmmGObjectUI):
self.add_gconf_handle( self.add_gconf_handle(
self.vm.on_console_scaling_changed(self.refresh_scaling)) self.vm.on_console_scaling_changed(self.refresh_scaling))
scroll = self.window.get_widget("console-vnc-scroll") scroll = self.widget("console-vnc-scroll")
scroll.connect("size-allocate", self.scroll_size_allocate) scroll.connect("size-allocate", self.scroll_size_allocate)
self.add_gconf_handle( self.add_gconf_handle(
self.config.on_console_accels_changed(self.set_enable_accel)) self.config.on_console_accels_changed(self.set_enable_accel))
@ -611,8 +610,8 @@ class vmmConsolePages(vmmGObjectUI):
########################## ##########################
def init_fs_toolbar(self): def init_fs_toolbar(self):
scroll = self.window.get_widget("console-vnc-scroll") scroll = self.widget("console-vnc-scroll")
pages = self.window.get_widget("console-pages") pages = self.widget("console-pages")
pages.remove(scroll) pages.remove(scroll)
self.fs_toolbar = gtk.Toolbar() self.fs_toolbar = gtk.Toolbar()
@ -729,11 +728,11 @@ class vmmConsolePages(vmmGObjectUI):
def refresh_scaling(self, ignore1=None, ignore2=None, ignore3=None, def refresh_scaling(self, ignore1=None, ignore2=None, ignore3=None,
ignore4=None): ignore4=None):
self.scale_type = self.vm.get_console_scaling() self.scale_type = self.vm.get_console_scaling()
self.window.get_widget("details-menu-view-scale-always").set_active( self.widget("details-menu-view-scale-always").set_active(
self.scale_type == self.config.CONSOLE_SCALE_ALWAYS) self.scale_type == self.config.CONSOLE_SCALE_ALWAYS)
self.window.get_widget("details-menu-view-scale-never").set_active( self.widget("details-menu-view-scale-never").set_active(
self.scale_type == self.config.CONSOLE_SCALE_NEVER) self.scale_type == self.config.CONSOLE_SCALE_NEVER)
self.window.get_widget("details-menu-view-scale-fullscreen").set_active( self.widget("details-menu-view-scale-fullscreen").set_active(
self.scale_type == self.config.CONSOLE_SCALE_FULLSCREEN) self.scale_type == self.config.CONSOLE_SCALE_FULLSCREEN)
self.update_scaling() self.update_scaling()
@ -742,11 +741,11 @@ class vmmConsolePages(vmmGObjectUI):
if not src.get_active(): if not src.get_active():
return return
if src == self.window.get_widget("details-menu-view-scale-always"): if src == self.widget("details-menu-view-scale-always"):
self.scale_type = self.config.CONSOLE_SCALE_ALWAYS self.scale_type = self.config.CONSOLE_SCALE_ALWAYS
elif src == self.window.get_widget("details-menu-view-scale-fullscreen"): elif src == self.widget("details-menu-view-scale-fullscreen"):
self.scale_type = self.config.CONSOLE_SCALE_FULLSCREEN self.scale_type = self.config.CONSOLE_SCALE_FULLSCREEN
elif src == self.window.get_widget("details-menu-view-scale-never"): elif src == self.widget("details-menu-view-scale-never"):
self.scale_type = self.config.CONSOLE_SCALE_NEVER self.scale_type = self.config.CONSOLE_SCALE_NEVER
self.vm.set_console_scaling(self.scale_type) self.vm.set_console_scaling(self.scale_type)
@ -757,8 +756,8 @@ class vmmConsolePages(vmmGObjectUI):
return return
curscale = self.viewer.get_scaling() curscale = self.viewer.get_scaling()
fs = self.window.get_widget("control-fullscreen").get_active() fs = self.widget("control-fullscreen").get_active()
vnc_scroll = self.window.get_widget("console-vnc-scroll") vnc_scroll = self.widget("console-vnc-scroll")
if (self.scale_type == self.config.CONSOLE_SCALE_NEVER if (self.scale_type == self.config.CONSOLE_SCALE_NEVER
and curscale == True): and curscale == True):
@ -785,22 +784,22 @@ class vmmConsolePages(vmmGObjectUI):
self._change_fullscreen(False) self._change_fullscreen(False)
def _change_fullscreen(self, do_fullscreen): def _change_fullscreen(self, do_fullscreen):
self.window.get_widget("control-fullscreen").set_active(do_fullscreen) self.widget("control-fullscreen").set_active(do_fullscreen)
if do_fullscreen: if do_fullscreen:
self.topwin.fullscreen() self.topwin.fullscreen()
self.fs_toolbar.show() self.fs_toolbar.show()
self.fs_drawer.set_active(True) self.fs_drawer.set_active(True)
self.window.get_widget("toolbar-box").hide() self.widget("toolbar-box").hide()
self.window.get_widget("details-menubar").hide() self.widget("details-menubar").hide()
else: else:
self.fs_toolbar.hide() self.fs_toolbar.hide()
self.fs_drawer.set_active(False) self.fs_drawer.set_active(False)
self.topwin.unfullscreen() self.topwin.unfullscreen()
if self.window.get_widget("details-menu-view-toolbar").get_active(): if self.widget("details-menu-view-toolbar").get_active():
self.window.get_widget("toolbar-box").show() self.widget("toolbar-box").show()
self.window.get_widget("details-menubar").show() self.widget("details-menubar").show()
self.update_scaling() self.update_scaling()
@ -836,7 +835,7 @@ class vmmConsolePages(vmmGObjectUI):
self.activate_unavailable_page(_("Guest has crashed")) self.activate_unavailable_page(_("Guest has crashed"))
def close_viewer(self): def close_viewer(self):
viewport = self.window.get_widget("console-vnc-viewport") viewport = self.widget("console-vnc-viewport")
if self.viewer is None: if self.viewer is None:
return return
@ -854,7 +853,7 @@ class vmmConsolePages(vmmGObjectUI):
def update_widget_states(self, vm, status_ignore): def update_widget_states(self, vm, status_ignore):
runable = vm.is_runable() runable = vm.is_runable()
pages = self.window.get_widget("console-pages") pages = self.widget("console-pages")
page = pages.get_current_page() page = pages.get_current_page()
if runable: if runable:
@ -884,49 +883,49 @@ class vmmConsolePages(vmmGObjectUI):
with care with care
""" """
self.close_viewer() self.close_viewer()
self.window.get_widget("console-pages").set_current_page(PAGE_UNAVAILABLE) self.widget("console-pages").set_current_page(PAGE_UNAVAILABLE)
self.window.get_widget("details-menu-vm-screenshot").set_sensitive(False) self.widget("details-menu-vm-screenshot").set_sensitive(False)
self.window.get_widget("console-unavailable").set_label("<b>" + msg + "</b>") self.widget("console-unavailable").set_label("<b>" + msg + "</b>")
def activate_auth_page(self, withPassword=True, withUsername=False): def activate_auth_page(self, withPassword=True, withUsername=False):
(pw, username) = self.config.get_console_password(self.vm) (pw, username) = self.config.get_console_password(self.vm)
self.window.get_widget("details-menu-vm-screenshot").set_sensitive(False) self.widget("details-menu-vm-screenshot").set_sensitive(False)
if withPassword: if withPassword:
self.window.get_widget("console-auth-password").show() self.widget("console-auth-password").show()
self.window.get_widget("label-auth-password").show() self.widget("label-auth-password").show()
else: else:
self.window.get_widget("console-auth-password").hide() self.widget("console-auth-password").hide()
self.window.get_widget("label-auth-password").hide() self.widget("label-auth-password").hide()
if withUsername: if withUsername:
self.window.get_widget("console-auth-username").show() self.widget("console-auth-username").show()
self.window.get_widget("label-auth-username").show() self.widget("label-auth-username").show()
else: else:
self.window.get_widget("console-auth-username").hide() self.widget("console-auth-username").hide()
self.window.get_widget("label-auth-username").hide() self.widget("label-auth-username").hide()
self.window.get_widget("console-auth-username").set_text(username) self.widget("console-auth-username").set_text(username)
self.window.get_widget("console-auth-password").set_text(pw) self.widget("console-auth-password").set_text(pw)
if self.config.has_keyring(): if self.config.has_keyring():
self.window.get_widget("console-auth-remember").set_sensitive(True) self.widget("console-auth-remember").set_sensitive(True)
if pw != "" or username != "": if pw != "" or username != "":
self.window.get_widget("console-auth-remember").set_active(True) self.widget("console-auth-remember").set_active(True)
else: else:
self.window.get_widget("console-auth-remember").set_active(False) self.widget("console-auth-remember").set_active(False)
else: else:
self.window.get_widget("console-auth-remember").set_sensitive(False) self.widget("console-auth-remember").set_sensitive(False)
self.window.get_widget("console-pages").set_current_page(PAGE_AUTHENTICATE) self.widget("console-pages").set_current_page(PAGE_AUTHENTICATE)
if withUsername: if withUsername:
self.window.get_widget("console-auth-username").grab_focus() self.widget("console-auth-username").grab_focus()
else: else:
self.window.get_widget("console-auth-password").grab_focus() self.widget("console-auth-password").grab_focus()
def activate_viewer_page(self): def activate_viewer_page(self):
self.window.get_widget("console-pages").set_current_page(PAGE_VIEWER) self.widget("console-pages").set_current_page(PAGE_VIEWER)
self.window.get_widget("details-menu-vm-screenshot").set_sensitive(True) self.widget("details-menu-vm-screenshot").set_sensitive(True)
if self.viewer and self.viewer.get_widget(): if self.viewer and self.viewer.get_widget():
self.viewer.get_widget().grab_focus() self.viewer.get_widget().grab_focus()
@ -934,15 +933,15 @@ class vmmConsolePages(vmmGObjectUI):
self.set_allow_fullscreen() self.set_allow_fullscreen()
def set_allow_fullscreen(self): def set_allow_fullscreen(self):
cpage = self.window.get_widget("console-pages").get_current_page() cpage = self.widget("console-pages").get_current_page()
dpage = self.window.get_widget("details-pages").get_current_page() dpage = self.widget("details-pages").get_current_page()
allow_fullscreen = (dpage == 0 and allow_fullscreen = (dpage == 0 and
cpage == PAGE_VIEWER and cpage == PAGE_VIEWER and
self.viewer_connected) self.viewer_connected)
self.window.get_widget("control-fullscreen").set_sensitive(allow_fullscreen) self.widget("control-fullscreen").set_sensitive(allow_fullscreen)
self.window.get_widget("details-menu-view-fullscreen").set_sensitive(allow_fullscreen) self.widget("details-menu-view-fullscreen").set_sensitive(allow_fullscreen)
def disconnected(self): def disconnected(self):
errout = "" errout = ""
@ -1073,7 +1072,7 @@ class vmmConsolePages(vmmGObjectUI):
try: try:
if protocol == "vnc": if protocol == "vnc":
self.viewer = VNCViewer(self) self.viewer = VNCViewer(self)
self.window.get_widget("console-vnc-viewport").add( self.widget("console-vnc-viewport").add(
self.viewer.get_widget()) self.viewer.get_widget())
self.viewer.init_widget() self.viewer.init_widget()
elif protocol == "spice": elif protocol == "spice":
@ -1102,14 +1101,14 @@ class vmmConsolePages(vmmGObjectUI):
_("Error connecting to graphical console") + ":\n%s" % e) _("Error connecting to graphical console") + ":\n%s" % e)
def set_credentials(self, src_ignore=None): def set_credentials(self, src_ignore=None):
passwd = self.window.get_widget("console-auth-password") passwd = self.widget("console-auth-password")
if passwd.flags() & gtk.VISIBLE: if passwd.flags() & gtk.VISIBLE:
self.viewer.set_credential_password(passwd.get_text()) self.viewer.set_credential_password(passwd.get_text())
username = self.window.get_widget("console-auth-username") username = self.widget("console-auth-username")
if username.flags() & gtk.VISIBLE: if username.flags() & gtk.VISIBLE:
self.viewer.set_credential_username(username.get_text()) self.viewer.set_credential_username(username.get_text())
if self.window.get_widget("console-auth-remember").get_active(): if self.widget("console-auth-remember").get_active():
self.config.set_console_password(self.vm, passwd.get_text(), self.config.set_console_password(self.vm, passwd.get_text(),
username.get_text()) username.get_text())
@ -1119,7 +1118,7 @@ class vmmConsolePages(vmmGObjectUI):
isn't a hard requirment so the user can still shrink the window isn't a hard requirment so the user can still shrink the window
again, as opposed to set_size_request again, as opposed to set_size_request
""" """
widget = self.window.get_widget("console-vnc-scroll") widget = self.widget("console-vnc-scroll")
signal_holder = [] signal_holder = []
def restore_scroll(src): def restore_scroll(src):
@ -1163,7 +1162,7 @@ class vmmConsolePages(vmmGObjectUI):
if not self.viewer or not self.viewer.get_desktop_resolution(): if not self.viewer or not self.viewer.get_desktop_resolution():
return return
scroll = self.window.get_widget("console-vnc-scroll") scroll = self.widget("console-vnc-scroll")
is_scale = self.viewer.get_scaling() is_scale = self.viewer.get_scaling()
dx = 0 dx = 0

View File

@ -209,42 +209,41 @@ class vmmCreate(vmmGObjectUI):
# State init methods # State init methods
def startup_error(self, error): def startup_error(self, error):
self.have_startup_error = True self.have_startup_error = True
self.window.get_widget("startup-error-box").show() self.widget("startup-error-box").show()
self.window.get_widget("install-box").hide() self.widget("install-box").hide()
self.window.get_widget("create-forward").set_sensitive(False) self.widget("create-forward").set_sensitive(False)
self.window.get_widget("startup-error").set_text("Error: %s" % error) self.widget("startup-error").set_text("Error: %s" % error)
return False return False
def startup_warning(self, error): def startup_warning(self, error):
self.window.get_widget("startup-error-box").show() self.widget("startup-error-box").show()
self.window.get_widget("startup-error").set_text("Warning: %s" % self.widget("startup-error").set_text("Warning: %s" % error)
error)
def set_initial_state(self): def set_initial_state(self):
self.window.get_widget("create-pages").set_show_tabs(False) self.widget("create-pages").set_show_tabs(False)
self.window.get_widget("install-method-pages").set_show_tabs(False) self.widget("install-method-pages").set_show_tabs(False)
# FIXME: Unhide this when we make some documentation # FIXME: Unhide this when we make some documentation
self.window.get_widget("create-help").hide() self.widget("create-help").hide()
finish_img = gtk.image_new_from_stock(gtk.STOCK_QUIT, finish_img = gtk.image_new_from_stock(gtk.STOCK_QUIT,
gtk.ICON_SIZE_BUTTON) gtk.ICON_SIZE_BUTTON)
self.window.get_widget("create-finish").set_image(finish_img) self.widget("create-finish").set_image(finish_img)
blue = gtk.gdk.color_parse("#0072A8") blue = gtk.gdk.color_parse("#0072A8")
self.window.get_widget("create-header").modify_bg(gtk.STATE_NORMAL, self.widget("create-header").modify_bg(gtk.STATE_NORMAL,
blue) blue)
box = self.window.get_widget("create-vm-icon-box") box = self.widget("create-vm-icon-box")
image = gtk.image_new_from_icon_name("vm_new_wizard", image = gtk.image_new_from_icon_name("vm_new_wizard",
gtk.ICON_SIZE_DIALOG) gtk.ICON_SIZE_DIALOG)
image.show() image.show()
box.pack_end(image, False) box.pack_end(image, False)
# Connection list # Connection list
self.window.get_widget("create-conn-label").set_text("") self.widget("create-conn-label").set_text("")
self.window.get_widget("startup-error").set_text("") self.widget("startup-error").set_text("")
conn_list = self.window.get_widget("create-conn") conn_list = self.widget("create-conn")
conn_model = gtk.ListStore(str, str) conn_model = gtk.ListStore(str, str)
conn_list.set_model(conn_model) conn_list.set_model(conn_model)
text = gtk.CellRendererText() text = gtk.CellRendererText()
@ -252,35 +251,35 @@ class vmmCreate(vmmGObjectUI):
conn_list.add_attribute(text, 'text', 1) conn_list.add_attribute(text, 'text', 1)
# ISO media list # ISO media list
iso_list = self.window.get_widget("install-local-box") iso_list = self.widget("install-local-box")
iso_model = gtk.ListStore(str) iso_model = gtk.ListStore(str)
iso_list.set_model(iso_model) iso_list.set_model(iso_model)
iso_list.set_text_column(0) iso_list.set_text_column(0)
self.window.get_widget("install-local-box").child.connect("activate", self.widget("install-local-box").child.connect("activate",
self.detect_media_os) self.detect_media_os)
# Lists for the install urls # Lists for the install urls
media_url_list = self.window.get_widget("install-url-box") media_url_list = self.widget("install-url-box")
media_url_model = gtk.ListStore(str) media_url_model = gtk.ListStore(str)
media_url_list.set_model(media_url_model) media_url_list.set_model(media_url_model)
media_url_list.set_text_column(0) media_url_list.set_text_column(0)
self.window.get_widget("install-url-box").child.connect("activate", self.widget("install-url-box").child.connect("activate",
self.detect_media_os) self.detect_media_os)
ks_url_list = self.window.get_widget("install-ks-box") ks_url_list = self.widget("install-ks-box")
ks_url_model = gtk.ListStore(str) ks_url_model = gtk.ListStore(str)
ks_url_list.set_model(ks_url_model) ks_url_list.set_model(ks_url_model)
ks_url_list.set_text_column(0) ks_url_list.set_text_column(0)
# Lists for distro type + variant # Lists for distro type + variant
os_type_list = self.window.get_widget("install-os-type") os_type_list = self.widget("install-os-type")
os_type_model = gtk.ListStore(str, str) os_type_model = gtk.ListStore(str, str)
os_type_list.set_model(os_type_model) os_type_list.set_model(os_type_model)
text = gtk.CellRendererText() text = gtk.CellRendererText()
os_type_list.pack_start(text, True) os_type_list.pack_start(text, True)
os_type_list.add_attribute(text, 'text', 1) os_type_list.add_attribute(text, 'text', 1)
os_variant_list = self.window.get_widget("install-os-version") os_variant_list = self.widget("install-os-version")
os_variant_model = gtk.ListStore(str, str) os_variant_model = gtk.ListStore(str, str)
os_variant_list.set_model(os_variant_model) os_variant_list.set_model(os_variant_model)
text = gtk.CellRendererText() text = gtk.CellRendererText()
@ -288,25 +287,25 @@ class vmmCreate(vmmGObjectUI):
os_variant_list.add_attribute(text, 'text', 1) os_variant_list.add_attribute(text, 'text', 1)
# Physical CD-ROM model # Physical CD-ROM model
cd_list = self.window.get_widget("install-local-cdrom-combo") cd_list = self.widget("install-local-cdrom-combo")
uihelpers.init_mediadev_combo(cd_list) uihelpers.init_mediadev_combo(cd_list)
# Networking # Networking
# [ interface type, device name, label, sensitive ] # [ interface type, device name, label, sensitive ]
net_list = self.window.get_widget("config-netdev") net_list = self.widget("config-netdev")
bridge_box = self.window.get_widget("config-netdev-bridge-box") bridge_box = self.widget("config-netdev-bridge-box")
uihelpers.init_network_list(net_list, bridge_box) uihelpers.init_network_list(net_list, bridge_box)
# Archtecture # Archtecture
archModel = gtk.ListStore(str) archModel = gtk.ListStore(str)
archList = self.window.get_widget("config-arch") archList = self.widget("config-arch")
text = gtk.CellRendererText() text = gtk.CellRendererText()
archList.pack_start(text, True) archList.pack_start(text, True)
archList.add_attribute(text, 'text', 0) archList.add_attribute(text, 'text', 0)
archList.set_model(archModel) archList.set_model(archModel)
hyperModel = gtk.ListStore(str, str, str, bool) hyperModel = gtk.ListStore(str, str, str, bool)
hyperList = self.window.get_widget("config-hv") hyperList = self.widget("config-hv")
text = gtk.CellRendererText() text = gtk.CellRendererText()
hyperList.pack_start(text, True) hyperList.pack_start(text, True)
hyperList.add_attribute(text, 'text', 0) hyperList.add_attribute(text, 'text', 0)
@ -314,7 +313,7 @@ class vmmCreate(vmmGObjectUI):
hyperList.set_model(hyperModel) hyperList.set_model(hyperModel)
# Sparse tooltip # Sparse tooltip
sparse_info = self.window.get_widget("config-storage-nosparse-info") sparse_info = self.widget("config-storage-nosparse-info")
uihelpers.set_sparse_tooltip(sparse_info) uihelpers.set_sparse_tooltip(sparse_info)
def reset_state(self, urihint=None): def reset_state(self, urihint=None):
@ -324,16 +323,16 @@ class vmmCreate(vmmGObjectUI):
self.disk = None self.disk = None
self.nic = None self.nic = None
self.window.get_widget("create-pages").set_current_page(PAGE_NAME) self.widget("create-pages").set_current_page(PAGE_NAME)
self.page_changed(None, None, PAGE_NAME) self.page_changed(None, None, PAGE_NAME)
self.window.get_widget("startup-error-box").hide() self.widget("startup-error-box").hide()
self.window.get_widget("install-box").show() self.widget("install-box").show()
# Name page state # Name page state
self.window.get_widget("create-vm-name").set_text("") self.widget("create-vm-name").set_text("")
self.window.get_widget("create-vm-name").grab_focus() self.widget("create-vm-name").grab_focus()
self.window.get_widget("method-local").set_active(True) self.widget("method-local").set_active(True)
self.window.get_widget("create-conn").set_active(-1) self.widget("create-conn").set_active(-1)
activeconn = self.populate_conn_list(urihint) activeconn = self.populate_conn_list(urihint)
try: try:
@ -349,53 +348,53 @@ class vmmCreate(vmmGObjectUI):
# Everything from this point forward should be connection independent # Everything from this point forward should be connection independent
# Distro/Variant # Distro/Variant
self.toggle_detect_os(self.window.get_widget("install-detect-os")) self.toggle_detect_os(self.widget("install-detect-os"))
self.populate_os_type_model() self.populate_os_type_model()
self.window.get_widget("install-os-type").set_active(0) self.widget("install-os-type").set_active(0)
self.window.get_widget("install-local-box").child.set_text("") self.widget("install-local-box").child.set_text("")
iso_model = self.window.get_widget("install-local-box").get_model() iso_model = self.widget("install-local-box").get_model()
self.populate_media_model(iso_model, self.conn.config_get_iso_paths()) self.populate_media_model(iso_model, self.conn.config_get_iso_paths())
# Install URL # Install URL
self.window.get_widget("install-urlopts-entry").set_text("") self.widget("install-urlopts-entry").set_text("")
self.window.get_widget("install-ks-box").child.set_text("") self.widget("install-ks-box").child.set_text("")
self.window.get_widget("install-url-box").child.set_text("") self.widget("install-url-box").child.set_text("")
self.window.get_widget("install-url-options").set_expanded(False) self.widget("install-url-options").set_expanded(False)
urlmodel = self.window.get_widget("install-url-box").get_model() urlmodel = self.widget("install-url-box").get_model()
ksmodel = self.window.get_widget("install-ks-box").get_model() ksmodel = self.widget("install-ks-box").get_model()
self.populate_media_model(urlmodel, self.config.get_media_urls()) self.populate_media_model(urlmodel, self.config.get_media_urls())
self.populate_media_model(ksmodel, self.config.get_kickstart_urls()) self.populate_media_model(ksmodel, self.config.get_kickstart_urls())
# Install import # Install import
self.window.get_widget("install-import-entry").set_text("") self.widget("install-import-entry").set_text("")
# Install container app # Install container app
self.window.get_widget("install-app-entry").set_text("/bin/sh") self.widget("install-app-entry").set_text("/bin/sh")
# Install container OS # Install container OS
self.window.get_widget("install-oscontainer-fs").set_text("") self.widget("install-oscontainer-fs").set_text("")
# Mem / CPUs # Mem / CPUs
self.window.get_widget("config-mem").set_value(DEFAULT_MEM) self.widget("config-mem").set_value(DEFAULT_MEM)
self.window.get_widget("config-cpus").set_value(1) self.widget("config-cpus").set_value(1)
# Storage # Storage
label_widget = self.window.get_widget("phys-hd-label") label_widget = self.widget("phys-hd-label")
label_widget.set_markup("") label_widget.set_markup("")
if not self.host_storage_timer: if not self.host_storage_timer:
self.host_storage_timer = self.safe_timeout_add(3 * 1000, self.host_storage_timer = self.safe_timeout_add(3 * 1000,
uihelpers.host_space_tick, uihelpers.host_space_tick,
self.conn, self.conn,
label_widget) label_widget)
self.window.get_widget("enable-storage").set_active(True) self.widget("enable-storage").set_active(True)
self.window.get_widget("config-storage-create").set_active(True) self.widget("config-storage-create").set_active(True)
self.window.get_widget("config-storage-size").set_value(8) self.widget("config-storage-size").set_value(8)
self.window.get_widget("config-storage-entry").set_text("") self.widget("config-storage-entry").set_text("")
self.window.get_widget("config-storage-nosparse").set_active(True) self.widget("config-storage-nosparse").set_active(True)
# Final page # Final page
self.window.get_widget("summary-customize").set_active(False) self.widget("summary-customize").set_active(False)
# Make sure window is a sane size # Make sure window is a sane size
self.topwin.resize(1, 1) self.topwin.resize(1, 1)
@ -403,7 +402,7 @@ class vmmCreate(vmmGObjectUI):
def set_conn_state(self): def set_conn_state(self):
# Update all state that has some dependency on the current connection # Update all state that has some dependency on the current connection
self.window.get_widget("create-forward").set_sensitive(True) self.widget("create-forward").set_sensitive(True)
if self.conn.is_read_only(): if self.conn.is_read_only():
return self.startup_error(_("Connection is read only.")) return self.startup_error(_("Connection is read only."))
@ -453,10 +452,10 @@ class vmmCreate(vmmGObjectUI):
is_container = self.conn.is_container() is_container = self.conn.is_container()
# Install Options # Install Options
method_tree = self.window.get_widget("method-tree") method_tree = self.widget("method-tree")
method_pxe = self.window.get_widget("method-pxe") method_pxe = self.widget("method-pxe")
method_local = self.window.get_widget("method-local") method_local = self.widget("method-local")
method_container_app = self.window.get_widget("method-container-app") method_container_app = self.widget("method-container-app")
method_tree.set_sensitive(is_local) method_tree.set_sensitive(is_local)
method_local.set_sensitive(not is_pv) method_local.set_sensitive(not is_pv)
@ -494,16 +493,16 @@ class vmmCreate(vmmGObjectUI):
# Container install options # Container install options
method_container_app.set_active(True) method_container_app.set_active(True)
self.window.get_widget("virt-install-box").set_property( self.widget("virt-install-box").set_property("visible",
"visible", not is_container) not is_container)
self.window.get_widget("container-install-box").set_property( self.widget("container-install-box").set_property("visible",
"visible", is_container) is_container)
# Install local # Install local
iso_option = self.window.get_widget("install-local-iso") iso_option = self.widget("install-local-iso")
cdrom_option = self.window.get_widget("install-local-cdrom") cdrom_option = self.widget("install-local-cdrom")
cdrom_list = self.window.get_widget("install-local-cdrom-combo") cdrom_list = self.widget("install-local-cdrom-combo")
cdrom_warn = self.window.get_widget("install-local-cdrom-warn") cdrom_warn = self.widget("install-local-cdrom-warn")
sigs = uihelpers.populate_mediadev_combo(self.conn, cdrom_list, sigs = uihelpers.populate_mediadev_combo(self.conn, cdrom_list,
MEDIA_CDROM) MEDIA_CDROM)
@ -536,8 +535,8 @@ class vmmCreate(vmmGObjectUI):
{'maxmem': self.pretty_memory(memory)}) {'maxmem': self.pretty_memory(memory)})
mem_label = ("<span size='small' color='#484848'>%s</span>" % mem_label = ("<span size='small' color='#484848'>%s</span>" %
mem_label) mem_label)
self.window.get_widget("config-mem").set_range(50, memory / 1024) self.widget("config-mem").set_range(50, memory / 1024)
self.window.get_widget("phys-mem-label").set_markup(mem_label) self.widget("phys-mem-label").set_markup(mem_label)
# CPU # CPU
phys_cpus = self.conn.host_active_processor_count() phys_cpus = self.conn.host_active_processor_count()
@ -550,8 +549,7 @@ class vmmCreate(vmmGObjectUI):
max_v) max_v)
else: else:
cpu_tooltip = None cpu_tooltip = None
util.tooltip_wrapper(self.window.get_widget("config-cpus"), util.tooltip_wrapper(self.widget("config-cpus"), cpu_tooltip)
cpu_tooltip)
cmax = int(cmax) cmax = int(cmax)
if cmax <= 0: if cmax <= 0:
@ -560,15 +558,15 @@ class vmmCreate(vmmGObjectUI):
{'numcpus': int(phys_cpus)}) {'numcpus': int(phys_cpus)})
cpu_label = ("<span size='small' color='#484848'>%s</span>" % cpu_label = ("<span size='small' color='#484848'>%s</span>" %
cpu_label) cpu_label)
self.window.get_widget("config-cpus").set_range(1, cmax) self.widget("config-cpus").set_range(1, cmax)
self.window.get_widget("phys-cpu-label").set_markup(cpu_label) self.widget("phys-cpu-label").set_markup(cpu_label)
# Storage # Storage
have_storage = (is_local or is_storage_capable) have_storage = (is_local or is_storage_capable)
storage_tooltip = None storage_tooltip = None
use_storage = self.window.get_widget("config-storage-select") use_storage = self.widget("config-storage-select")
storage_area = self.window.get_widget("config-storage-area") storage_area = self.widget("config-storage-area")
storage_area.set_sensitive(have_storage) storage_area.set_sensitive(have_storage)
if not have_storage: if not have_storage:
@ -578,10 +576,10 @@ class vmmCreate(vmmGObjectUI):
util.tooltip_wrapper(storage_area, storage_tooltip) util.tooltip_wrapper(storage_area, storage_tooltip)
# Networking # Networking
net_list = self.window.get_widget("config-netdev") net_list = self.widget("config-netdev")
net_expander = self.window.get_widget("config-advanced-expander") net_expander = self.widget("config-advanced-expander")
net_warn_icon = self.window.get_widget("config-netdev-warn-icon") net_warn_icon = self.widget("config-netdev-warn-icon")
net_warn_box = self.window.get_widget("config-netdev-warn-box") net_warn_box = self.widget("config-netdev-warn-box")
net_expander.hide() net_expander.hide()
net_warn_icon.hide() net_warn_icon.hide()
net_warn_box.hide() net_warn_box.hide()
@ -592,14 +590,14 @@ class vmmCreate(vmmGObjectUI):
self.conn.netdev_error, True) self.conn.netdev_error, True)
newmac = uihelpers.generate_macaddr(self.conn) newmac = uihelpers.generate_macaddr(self.conn)
self.window.get_widget("config-set-macaddr").set_active(bool(newmac)) self.widget("config-set-macaddr").set_active(bool(newmac))
self.window.get_widget("config-macaddr").set_text(newmac) self.widget("config-macaddr").set_text(newmac)
def set_net_warn(self, show_warn, msg, do_tooltip): def set_net_warn(self, show_warn, msg, do_tooltip):
net_warn_icon = self.window.get_widget("config-netdev-warn-icon") net_warn_icon = self.widget("config-netdev-warn-icon")
net_warn_box = self.window.get_widget("config-netdev-warn-box") net_warn_box = self.widget("config-netdev-warn-box")
net_warn_label = self.window.get_widget("config-netdev-warn-label") net_warn_label = self.widget("config-netdev-warn-label")
net_expander = self.window.get_widget("config-advanced-expander") net_expander = self.widget("config-advanced-expander")
if show_warn: if show_warn:
net_expander.set_expanded(True) net_expander.set_expanded(True)
@ -614,7 +612,7 @@ class vmmCreate(vmmGObjectUI):
net_warn_label.set_markup(markup) net_warn_label.set_markup(markup)
def populate_hv(self): def populate_hv(self):
hv_list = self.window.get_widget("config-hv") hv_list = self.widget("config-hv")
model = hv_list.get_model() model = hv_list.get_model()
model.clear() model.clear()
@ -650,7 +648,7 @@ class vmmCreate(vmmGObjectUI):
model.append([label, gtype, domtype, sensitive]) model.append([label, gtype, domtype, sensitive])
hv_info = self.window.get_widget("config-hv-info") hv_info = self.widget("config-hv-info")
if tooltip: if tooltip:
hv_info.show() hv_info.show()
util.tooltip_wrapper(hv_info, tooltip) util.tooltip_wrapper(hv_info, tooltip)
@ -660,7 +658,7 @@ class vmmCreate(vmmGObjectUI):
hv_list.set_active(default) hv_list.set_active(default)
def populate_arch(self): def populate_arch(self):
arch_list = self.window.get_widget("config-arch") arch_list = self.widget("config-arch")
model = arch_list.get_model() model = arch_list.get_model()
model.clear() model.clear()
@ -678,7 +676,7 @@ class vmmCreate(vmmGObjectUI):
arch_list.set_active(default) arch_list.set_active(default)
def populate_conn_list(self, urihint=None): def populate_conn_list(self, urihint=None):
conn_list = self.window.get_widget("create-conn") conn_list = self.widget("create-conn")
model = conn_list.get_model() model = conn_list.get_model()
model.clear() model.clear()
@ -709,18 +707,18 @@ class vmmCreate(vmmGObjectUI):
activeuri, activedesc = model[default] activeuri, activedesc = model[default]
activeconn = self.engine.connections[activeuri]["connection"] activeconn = self.engine.connections[activeuri]["connection"]
self.window.get_widget("create-conn-label").set_text(activedesc) self.widget("create-conn-label").set_text(activedesc)
if len(model) <= 1: if len(model) <= 1:
self.window.get_widget("create-conn").hide() self.widget("create-conn").hide()
self.window.get_widget("create-conn-label").show() self.widget("create-conn-label").show()
else: else:
self.window.get_widget("create-conn").show() self.widget("create-conn").show()
self.window.get_widget("create-conn-label").hide() self.widget("create-conn-label").hide()
return activeconn return activeconn
def populate_os_type_model(self): def populate_os_type_model(self):
model = self.window.get_widget("install-os-type").get_model() model = self.widget("install-os-type").get_model()
model.clear() model.clear()
model.append([OS_GENERIC, _("Generic")]) model.append([OS_GENERIC, _("Generic")])
types = virtinst.FullVirtGuest.list_os_types() types = virtinst.FullVirtGuest.list_os_types()
@ -728,7 +726,7 @@ class vmmCreate(vmmGObjectUI):
model.append([t, virtinst.FullVirtGuest.get_os_type_label(t)]) model.append([t, virtinst.FullVirtGuest.get_os_type_label(t)])
def populate_os_variant_model(self, _type): def populate_os_variant_model(self, _type):
model = self.window.get_widget("install-os-version").get_model() model = self.widget("install-os-version").get_model()
model.clear() model.clear()
if _type == OS_GENERIC: if _type == OS_GENERIC:
model.append([OS_GENERIC, _("Generic")]) model.append([OS_GENERIC, _("Generic")])
@ -825,43 +823,43 @@ class vmmCreate(vmmGObjectUI):
title = "Ready to begin installation of <b>%s</b>" % self.guest.name title = "Ready to begin installation of <b>%s</b>" % self.guest.name
self.window.get_widget("summary-title").set_markup(title) self.widget("summary-title").set_markup(title)
self.window.get_widget("summary-os").set_text(osstr) self.widget("summary-os").set_text(osstr)
self.window.get_widget("summary-install").set_text(install) self.widget("summary-install").set_text(install)
self.window.get_widget("summary-mem").set_text(mem) self.widget("summary-mem").set_text(mem)
self.window.get_widget("summary-cpu").set_text(cpu) self.widget("summary-cpu").set_text(cpu)
self.window.get_widget("summary-storage").set_markup(storage) self.widget("summary-storage").set_markup(storage)
# get_* methods # get_* methods
def get_config_name(self): def get_config_name(self):
return self.window.get_widget("create-vm-name").get_text() return self.widget("create-vm-name").get_text()
def is_install_page(self): def is_install_page(self):
notebook = self.window.get_widget("create-pages") notebook = self.widget("create-pages")
curpage = notebook.get_current_page() curpage = notebook.get_current_page()
return curpage == PAGE_INSTALL return curpage == PAGE_INSTALL
def get_config_install_page(self): def get_config_install_page(self):
if self.window.get_widget("virt-install-box").get_property("visible"): if self.widget("virt-install-box").get_property("visible"):
if self.window.get_widget("method-local").get_active(): if self.widget("method-local").get_active():
return INSTALL_PAGE_ISO return INSTALL_PAGE_ISO
elif self.window.get_widget("method-tree").get_active(): elif self.widget("method-tree").get_active():
return INSTALL_PAGE_URL return INSTALL_PAGE_URL
elif self.window.get_widget("method-pxe").get_active(): elif self.widget("method-pxe").get_active():
return INSTALL_PAGE_PXE return INSTALL_PAGE_PXE
elif self.window.get_widget("method-import").get_active(): elif self.widget("method-import").get_active():
return INSTALL_PAGE_IMPORT return INSTALL_PAGE_IMPORT
else: else:
if self.window.get_widget("method-container-app").get_active(): if self.widget("method-container-app").get_active():
return INSTALL_PAGE_CONTAINER_APP return INSTALL_PAGE_CONTAINER_APP
if self.window.get_widget("method-container-os").get_active(): if self.widget("method-container-os").get_active():
return INSTALL_PAGE_CONTAINER_OS return INSTALL_PAGE_CONTAINER_OS
def get_config_os_info(self): def get_config_os_info(self):
d_list = self.window.get_widget("install-os-type") d_list = self.widget("install-os-type")
d_idx = d_list.get_active() d_idx = d_list.get_active()
v_list = self.window.get_widget("install-os-version") v_list = self.widget("install-os-version")
v_idx = v_list.get_active() v_idx = v_list.get_active()
distro = None distro = None
dlabel = None dlabel = None
@ -876,10 +874,10 @@ class vmmCreate(vmmGObjectUI):
return (distro, variant, dlabel, vlabel) return (distro, variant, dlabel, vlabel)
def get_config_local_media(self, store_media=False): def get_config_local_media(self, store_media=False):
if self.window.get_widget("install-local-cdrom").get_active(): if self.widget("install-local-cdrom").get_active():
return self.window.get_widget("install-local-cdrom-combo").get_active_text() return self.widget("install-local-cdrom-combo").get_active_text()
else: else:
ret = self.window.get_widget("install-local-box").child.get_text() ret = self.widget("install-local-box").child.get_text()
if ret and store_media: if ret and store_media:
self.conn.config_add_iso_path(ret) self.conn.config_add_iso_path(ret)
return ret return ret
@ -891,16 +889,16 @@ class vmmCreate(vmmGObjectUI):
if instpage == INSTALL_PAGE_ISO: if instpage == INSTALL_PAGE_ISO:
media = self.get_config_local_media() media = self.get_config_local_media()
elif instpage == INSTALL_PAGE_URL: elif instpage == INSTALL_PAGE_URL:
media = self.window.get_widget("install-url-box").get_active_text() media = self.widget("install-url-box").get_active_text()
elif instpage == INSTALL_PAGE_IMPORT: elif instpage == INSTALL_PAGE_IMPORT:
media = self.window.get_widget("install-import-entry").get_text() media = self.widget("install-import-entry").get_text()
return media return media
def get_config_url_info(self, store_media=False): def get_config_url_info(self, store_media=False):
media = self.window.get_widget("install-url-box").get_active_text().strip() media = self.widget("install-url-box").get_active_text().strip()
extra = self.window.get_widget("install-urlopts-entry").get_text().strip() extra = self.widget("install-urlopts-entry").get_text().strip()
ks = self.window.get_widget("install-ks-box").get_active_text().strip() ks = self.widget("install-ks-box").get_active_text().strip()
if media and store_media: if media and store_media:
self.config.add_media_url(media) self.config.add_media_url(media)
@ -910,13 +908,13 @@ class vmmCreate(vmmGObjectUI):
return (media.strip(), extra.strip(), ks.strip()) return (media.strip(), extra.strip(), ks.strip())
def get_config_import_path(self): def get_config_import_path(self):
return self.window.get_widget("install-import-entry").get_text() return self.widget("install-import-entry").get_text()
def get_config_container_app_path(self): def get_config_container_app_path(self):
return self.window.get_widget("install-app-entry").get_text() return self.widget("install-app-entry").get_text()
def get_config_container_fs_path(self): def get_config_container_fs_path(self):
return self.window.get_widget("install-oscontainer-fs").get_text() return self.widget("install-oscontainer-fs").get_text()
def get_default_path(self, name): def get_default_path(self, name):
# Don't generate a new path if the install failed # Don't generate a new path if the install failed
@ -927,14 +925,14 @@ class vmmCreate(vmmGObjectUI):
return util.get_default_path(self.conn, name) return util.get_default_path(self.conn, name)
def is_default_storage(self): def is_default_storage(self):
usedef = self.window.get_widget("config-storage-create").get_active() usedef = self.widget("config-storage-create").get_active()
isimport = (self.get_config_install_page() == INSTALL_PAGE_IMPORT) isimport = (self.get_config_install_page() == INSTALL_PAGE_IMPORT)
return usedef and not isimport return usedef and not isimport
def get_storage_info(self): def get_storage_info(self):
path = None path = None
size = self.window.get_widget("config-storage-size").get_value() size = self.widget("config-storage-size").get_value()
sparse = not self.window.get_widget("config-storage-nosparse").get_active() sparse = not self.widget("config-storage-nosparse").get_active()
if self.get_config_install_page() == INSTALL_PAGE_IMPORT: if self.get_config_install_page() == INSTALL_PAGE_IMPORT:
path = self.get_config_import_path() path = self.get_config_import_path()
@ -945,14 +943,14 @@ class vmmCreate(vmmGObjectUI):
path = self.get_default_path(self.guest.name) path = self.get_default_path(self.guest.name)
logging.debug("Default storage path is: %s" % path) logging.debug("Default storage path is: %s" % path)
else: else:
path = self.window.get_widget("config-storage-entry").get_text() path = self.widget("config-storage-entry").get_text()
return (path, size, sparse) return (path, size, sparse)
def get_config_network_info(self): def get_config_network_info(self):
net_list = self.window.get_widget("config-netdev") net_list = self.widget("config-netdev")
bridge_ent = self.window.get_widget("config-netdev-bridge") bridge_ent = self.widget("config-netdev-bridge")
macaddr = self.window.get_widget("config-macaddr").get_text() macaddr = self.widget("config-macaddr").get_text()
net_type, net_src = uihelpers.get_network_selection(net_list, net_type, net_src = uihelpers.get_network_selection(net_list,
bridge_ent) bridge_ent)
@ -968,10 +966,10 @@ class vmmCreate(vmmGObjectUI):
return self.config.get_graphics_type() return self.config.get_graphics_type()
def get_config_customize(self): def get_config_customize(self):
return self.window.get_widget("summary-customize").get_active() return self.widget("summary-customize").get_active()
def is_detect_active(self): def is_detect_active(self):
return self.window.get_widget("install-detect-os").get_active() return self.widget("install-detect-os").get_active()
# Listeners # Listeners
@ -1000,7 +998,7 @@ class vmmCreate(vmmGObjectUI):
self.check_network_selection() self.check_network_selection()
def check_network_selection(self): def check_network_selection(self):
src = self.window.get_widget("config-netdev") src = self.widget("config-netdev")
idx = src.get_active() idx = src.get_active()
show_pxe_warn = True show_pxe_warn = True
pxe_install = (self.get_config_install_page() == INSTALL_PAGE_PXE) pxe_install = (self.get_config_install_page() == INSTALL_PAGE_PXE)
@ -1049,7 +1047,7 @@ class vmmCreate(vmmGObjectUI):
# If the url_entry has focus, don't fire detect_media_os, it means # If the url_entry has focus, don't fire detect_media_os, it means
# the user is probably typing # the user is probably typing
self.mediaDetected = False self.mediaDetected = False
if (self.window.get_widget("install-url-box").child.flags() & if (self.widget("install-url-box").child.flags() &
gtk.HAS_FOCUS): gtk.HAS_FOCUS):
return return
self.detect_media_os() self.detect_media_os()
@ -1068,17 +1066,17 @@ class vmmCreate(vmmGObjectUI):
dodetect = src.get_active() dodetect = src.get_active()
if dodetect: if dodetect:
self.window.get_widget("install-os-type-label").show() self.widget("install-os-type-label").show()
self.window.get_widget("install-os-version-label").show() self.widget("install-os-version-label").show()
self.window.get_widget("install-os-type").hide() self.widget("install-os-type").hide()
self.window.get_widget("install-os-version").hide() self.widget("install-os-version").hide()
self.mediaDetected = False self.mediaDetected = False
self.detect_media_os() # Run detection self.detect_media_os() # Run detection
else: else:
self.window.get_widget("install-os-type-label").hide() self.widget("install-os-type-label").hide()
self.window.get_widget("install-os-version-label").hide() self.widget("install-os-version-label").hide()
self.window.get_widget("install-os-type").show() self.widget("install-os-type").show()
self.window.get_widget("install-os-version").show() self.widget("install-os-version").show()
def change_os_type(self, box): def change_os_type(self, box):
model = box.get_model() model = box.get_model()
@ -1086,28 +1084,28 @@ class vmmCreate(vmmGObjectUI):
_type = model.get_value(box.get_active_iter(), 0) _type = model.get_value(box.get_active_iter(), 0)
self.populate_os_variant_model(_type) self.populate_os_variant_model(_type)
variant = self.window.get_widget("install-os-version") variant = self.widget("install-os-version")
variant.set_active(0) variant.set_active(0)
def toggle_local_cdrom(self, src): def toggle_local_cdrom(self, src):
combo = self.window.get_widget("install-local-cdrom-combo") combo = self.widget("install-local-cdrom-combo")
is_active = src.get_active() is_active = src.get_active()
if is_active: if is_active:
if combo.get_active() != -1: if combo.get_active() != -1:
# Local CDROM was selected with media preset, detect distro # Local CDROM was selected with media preset, detect distro
self.detect_media_os() self.detect_media_os()
self.window.get_widget("install-local-cdrom-combo").set_sensitive(is_active) self.widget("install-local-cdrom-combo").set_sensitive(is_active)
def toggle_local_iso(self, src): def toggle_local_iso(self, src):
uselocal = src.get_active() uselocal = src.get_active()
self.window.get_widget("install-local-box").set_sensitive(uselocal) self.widget("install-local-box").set_sensitive(uselocal)
self.window.get_widget("install-local-browse").set_sensitive(uselocal) self.widget("install-local-browse").set_sensitive(uselocal)
def detect_visibility_changed(self, src, ignore=None): def detect_visibility_changed(self, src, ignore=None):
is_visible = src.get_property("visible") is_visible = src.get_property("visible")
detect_chkbox = self.window.get_widget("install-detect-os") detect_chkbox = self.widget("install-detect-os")
nodetect_label = self.window.get_widget("install-nodetect-label") nodetect_label = self.widget("install-nodetect-label")
detect_chkbox.set_active(is_visible) detect_chkbox.set_active(is_visible)
detect_chkbox.toggled() detect_chkbox.toggled()
@ -1119,46 +1117,46 @@ class vmmCreate(vmmGObjectUI):
def browse_oscontainer(self, ignore1=None, ignore2=None): def browse_oscontainer(self, ignore1=None, ignore2=None):
def set_path(ignore, path): def set_path(ignore, path):
self.window.get_widget("install-oscontainer-fs").set_text(path) self.widget("install-oscontainer-fs").set_text(path)
self._browse_file(set_path, is_media=False, is_dir=True) self._browse_file(set_path, is_media=False, is_dir=True)
def browse_app(self, ignore1=None, ignore2=None): def browse_app(self, ignore1=None, ignore2=None):
def set_path(ignore, path): def set_path(ignore, path):
self.window.get_widget("install-app-entry").set_text(path) self.widget("install-app-entry").set_text(path)
self._browse_file(set_path, is_media=False) self._browse_file(set_path, is_media=False)
def browse_import(self, ignore1=None, ignore2=None): def browse_import(self, ignore1=None, ignore2=None):
def set_path(ignore, path): def set_path(ignore, path):
self.window.get_widget("install-import-entry").set_text(path) self.widget("install-import-entry").set_text(path)
self._browse_file(set_path, is_media=False) self._browse_file(set_path, is_media=False)
def browse_iso(self, ignore1=None, ignore2=None): def browse_iso(self, ignore1=None, ignore2=None):
def set_path(ignore, path): def set_path(ignore, path):
self.window.get_widget("install-local-box").child.set_text(path) self.widget("install-local-box").child.set_text(path)
self._browse_file(set_path, is_media=True) self._browse_file(set_path, is_media=True)
self.window.get_widget("install-local-box").activate() self.widget("install-local-box").activate()
def browse_storage(self, ignore1): def browse_storage(self, ignore1):
def set_path(ignore, path): def set_path(ignore, path):
self.window.get_widget("config-storage-entry").set_text(path) self.widget("config-storage-entry").set_text(path)
self._browse_file(set_path, is_media=False) self._browse_file(set_path, is_media=False)
def toggle_enable_storage(self, src): def toggle_enable_storage(self, src):
self.window.get_widget("config-storage-box").set_sensitive(src.get_active()) self.widget("config-storage-box").set_sensitive(src.get_active())
def toggle_storage_select(self, src): def toggle_storage_select(self, src):
act = src.get_active() act = src.get_active()
self.window.get_widget("config-storage-browse-box").set_sensitive(act) self.widget("config-storage-browse-box").set_sensitive(act)
def toggle_macaddr(self, src): def toggle_macaddr(self, src):
self.window.get_widget("config-macaddr").set_sensitive(src.get_active()) self.widget("config-macaddr").set_sensitive(src.get_active())
# Navigation methods # Navigation methods
def set_install_page(self): def set_install_page(self):
instnotebook = self.window.get_widget("install-method-pages") instnotebook = self.widget("install-method-pages")
detectbox = self.window.get_widget("install-detect-os-box") detectbox = self.widget("install-detect-os-box")
osbox = self.window.get_widget("install-os-distro-box") osbox = self.widget("install-os-distro-box")
instpage = self.get_config_install_page() instpage = self.get_config_install_page()
# Setting OS value for a container guest doesn't really matter # Setting OS value for a container guest doesn't really matter
@ -1195,7 +1193,7 @@ class vmmCreate(vmmGObjectUI):
INSTALL_PAGE_CONTAINER_OS] INSTALL_PAGE_CONTAINER_OS]
def back(self, src_ignore): def back(self, src_ignore):
notebook = self.window.get_widget("create-pages") notebook = self.widget("create-pages")
curpage = notebook.get_current_page() curpage = notebook.get_current_page()
next_page = curpage - 1 next_page = curpage - 1
@ -1208,7 +1206,7 @@ class vmmCreate(vmmGObjectUI):
notebook.set_current_page(next_page) notebook.set_current_page(next_page)
def forward(self, src_ignore=None): def forward(self, src_ignore=None):
notebook = self.window.get_widget("create-pages") notebook = self.widget("create-pages")
curpage = notebook.get_current_page() curpage = notebook.get_current_page()
if self.have_startup_error: if self.have_startup_error:
@ -1232,7 +1230,7 @@ class vmmCreate(vmmGObjectUI):
# Skip storage page for import installs # Skip storage page for import installs
next_page += 1 next_page += 1
self.window.get_widget("create-forward").grab_focus() self.widget("create-forward").grab_focus()
notebook.set_current_page(next_page) notebook.set_current_page(next_page)
def set_page_num_text(self, cur): def set_page_num_text(self, cur):
@ -1246,37 +1244,37 @@ class vmmCreate(vmmGObjectUI):
_("Step %(current_page)d of %(max_page)d") % _("Step %(current_page)d of %(max_page)d") %
{'current_page': cur, 'max_page': final}) {'current_page': cur, 'max_page': final})
self.window.get_widget("config-pagenum").set_markup(page_lbl) self.widget("config-pagenum").set_markup(page_lbl)
def page_changed(self, ignore1, ignore2, pagenum): def page_changed(self, ignore1, ignore2, pagenum):
# Update page number # Update page number
self.set_page_num_text(pagenum) self.set_page_num_text(pagenum)
if pagenum == PAGE_NAME: if pagenum == PAGE_NAME:
self.window.get_widget("create-back").set_sensitive(False) self.widget("create-back").set_sensitive(False)
else: else:
self.window.get_widget("create-back").set_sensitive(True) self.widget("create-back").set_sensitive(True)
if pagenum == PAGE_INSTALL: if pagenum == PAGE_INSTALL:
self.detect_media_os() self.detect_media_os()
self.window.get_widget("install-os-distro-box").set_property( self.widget("install-os-distro-box").set_property(
"visible", "visible",
not self.container_install()) not self.container_install())
if pagenum != PAGE_FINISH: if pagenum != PAGE_FINISH:
self.window.get_widget("create-forward").show() self.widget("create-forward").show()
self.window.get_widget("create-finish").hide() self.widget("create-finish").hide()
return return
# PAGE_FINISH # PAGE_FINISH
# This is hidden in reset_state, so that it doesn't distort # This is hidden in reset_state, so that it doesn't distort
# the size of the wizard if it is expanded by default due to # the size of the wizard if it is expanded by default due to
# error # error
self.window.get_widget("config-advanced-expander").show() self.widget("config-advanced-expander").show()
self.window.get_widget("create-forward").hide() self.widget("create-forward").hide()
self.window.get_widget("create-finish").show() self.widget("create-finish").show()
self.window.get_widget("create-finish").grab_focus() self.widget("create-finish").grab_focus()
self.populate_summary() self.populate_summary()
# Repopulate the HV list, so we can make install method relevant # Repopulate the HV list, so we can make install method relevant
@ -1498,8 +1496,8 @@ class vmmCreate(vmmGObjectUI):
return True return True
def validate_mem_page(self): def validate_mem_page(self):
cpus = self.window.get_widget("config-cpus").get_value() cpus = self.widget("config-cpus").get_value()
mem = self.window.get_widget("config-mem").get_value() mem = self.widget("config-mem").get_value()
# VCPUS # VCPUS
try: try:
@ -1517,7 +1515,7 @@ class vmmCreate(vmmGObjectUI):
return True return True
def validate_storage_page(self, revalidate=True): def validate_storage_page(self, revalidate=True):
use_storage = self.window.get_widget("enable-storage").get_active() use_storage = self.widget("enable-storage").get_active()
instcd = self.get_config_install_page() == INSTALL_PAGE_ISO instcd = self.get_config_install_page() == INSTALL_PAGE_ISO
# CD/ISO install and no disks implies LiveCD # CD/ISO install and no disks implies LiveCD
@ -1664,7 +1662,7 @@ class vmmCreate(vmmGObjectUI):
def finish(self, src_ignore): def finish(self, src_ignore):
# Validate the final page # Validate the final page
page = self.window.get_widget("create-pages").get_current_page() page = self.widget("create-pages").get_current_page()
if self.validate(page) != True: if self.validate(page) != True:
return False return False
@ -1849,8 +1847,8 @@ class vmmCreate(vmmGObjectUI):
if not self.is_detect_active(): if not self.is_detect_active():
return return
self.window.get_widget("install-os-type-label").set_text(distro) self.widget("install-os-type-label").set_text(distro)
self.window.get_widget("install-os-version-label").set_text(ver) self.widget("install-os-version-label").set_text(ver)
def set_os_val(self, os_widget, value): def set_os_val(self, os_widget, value):
# Helper method to set the OS Type/Variant selections to the passed # Helper method to set the OS Type/Variant selections to the passed
@ -1880,9 +1878,9 @@ class vmmCreate(vmmGObjectUI):
if not self.is_detect_active(): if not self.is_detect_active():
return return
dl = self.set_os_val(self.window.get_widget("install-os-type"), dl = self.set_os_val(self.widget("install-os-type"),
distro) distro)
vl = self.set_os_val(self.window.get_widget("install-os-version"), vl = self.set_os_val(self.widget("install-os-version"),
ver) ver)
self.set_distro_labels(dl, vl) self.set_distro_labels(dl, vl)
@ -1894,7 +1892,7 @@ class vmmCreate(vmmGObjectUI):
gtk.gdk.threads_leave() gtk.gdk.threads_leave()
def _set_forward_sensitive(self, val): def _set_forward_sensitive(self, val):
self.window.get_widget("create-forward").set_sensitive(val) self.widget("create-forward").set_sensitive(val)
# The actual detection routine # The actual detection routine
def do_detect(self, forward): def do_detect(self, forward):

View File

@ -177,26 +177,26 @@ class vmmCreateInterface(vmmGObjectUI):
def set_initial_state(self): def set_initial_state(self):
self.window.get_widget("pages").set_show_tabs(False) self.widget("pages").set_show_tabs(False)
self.bond_config_win.get_widget("bond-pages").set_show_tabs(False) self.bond_config_win.get_widget("bond-pages").set_show_tabs(False)
# FIXME: Unhide this when we make some documentation # FIXME: Unhide this when we make some documentation
self.window.get_widget("help").hide() self.widget("help").hide()
finish_img = gtk.image_new_from_stock(gtk.STOCK_QUIT, finish_img = gtk.image_new_from_stock(gtk.STOCK_QUIT,
gtk.ICON_SIZE_BUTTON) gtk.ICON_SIZE_BUTTON)
self.window.get_widget("finish").set_image(finish_img) self.widget("finish").set_image(finish_img)
blue = gtk.gdk.color_parse("#0072A8") blue = gtk.gdk.color_parse("#0072A8")
self.window.get_widget("header").modify_bg(gtk.STATE_NORMAL, blue) self.widget("header").modify_bg(gtk.STATE_NORMAL, blue)
box = self.window.get_widget("header-icon-box") box = self.widget("header-icon-box")
image = gtk.image_new_from_icon_name("network-idle", image = gtk.image_new_from_icon_name("network-idle",
gtk.ICON_SIZE_DIALOG) gtk.ICON_SIZE_DIALOG)
image.show() image.show()
box.pack_end(image, False) box.pack_end(image, False)
# Interface type # Interface type
type_list = self.window.get_widget("interface-type") type_list = self.widget("interface-type")
type_model = gtk.ListStore(str, str) type_model = gtk.ListStore(str, str)
type_list.set_model(type_model) type_list.set_model(type_model)
text = gtk.CellRendererText() text = gtk.CellRendererText()
@ -213,10 +213,10 @@ class vmmCreateInterface(vmmGObjectUI):
# Start mode # Start mode
uihelpers.build_startmode_combo( uihelpers.build_startmode_combo(
self.window.get_widget("interface-startmode")) self.widget("interface-startmode"))
# Parent/slave Interface list # Parent/slave Interface list
slave_list = self.window.get_widget("interface-list") slave_list = self.widget("interface-list")
# [ vmmInterface, selected, selectabel, name, type, is defined, # [ vmmInterface, selected, selectabel, name, type, is defined,
# is active, in use by str, mac] # is active, in use by str, mac]
slave_model = gtk.ListStore(object, bool, bool, str, str, bool, bool, slave_model = gtk.ListStore(object, bool, bool, str, str, bool, bool,
@ -339,16 +339,16 @@ class vmmCreateInterface(vmmGObjectUI):
def reset_state(self): def reset_state(self):
self.window.get_widget("pages").set_current_page(PAGE_TYPE) self.widget("pages").set_current_page(PAGE_TYPE)
self.page_changed(None, None, PAGE_TYPE) self.page_changed(None, None, PAGE_TYPE)
self.window.get_widget("interface-type").set_active(0) self.widget("interface-type").set_active(0)
# General details # General details
self.window.get_widget("interface-name-entry").set_text("") self.widget("interface-name-entry").set_text("")
self.window.get_widget("interface-name-label").set_text("") self.widget("interface-name-label").set_text("")
self.window.get_widget("interface-startmode").set_active(0) self.widget("interface-startmode").set_active(0)
self.window.get_widget("interface-activate").set_active(False) self.widget("interface-activate").set_active(False)
# Bridge config # Bridge config
self.bridge_config_win.get_widget("bridge-delay").set_value(0) self.bridge_config_win.get_widget("bridge-delay").set_value(0)
@ -384,8 +384,8 @@ class vmmCreateInterface(vmmGObjectUI):
itype = self.get_config_interface_type() itype = self.get_config_interface_type()
# Set up default interface name # Set up default interface name
self.window.get_widget("interface-name-entry").hide() self.widget("interface-name-entry").hide()
self.window.get_widget("interface-name-label").hide() self.widget("interface-name-label").hide()
if itype in [Interface.Interface.INTERFACE_TYPE_BRIDGE, if itype in [Interface.Interface.INTERFACE_TYPE_BRIDGE,
Interface.Interface.INTERFACE_TYPE_BOND]: Interface.Interface.INTERFACE_TYPE_BOND]:
@ -393,7 +393,7 @@ class vmmCreateInterface(vmmGObjectUI):
else: else:
widget = "interface-name-label" widget = "interface-name-label"
self.window.get_widget(widget).show() self.widget(widget).show()
default_name = self.get_default_name() default_name = self.get_default_name()
self.set_interface_name(default_name) self.set_interface_name(default_name)
@ -406,10 +406,8 @@ class vmmCreateInterface(vmmGObjectUI):
for key, value in type_dict.items(): for key, value in type_dict.items():
do_show = (key == itype) do_show = (key == itype)
self.window.get_widget("%s-label" % value).set_property("visible", self.widget("%s-label" % value).set_property("visible", do_show)
do_show) self.widget("%s-box" % value).set_property("visible", do_show)
self.window.get_widget("%s-box" % value).set_property("visible",
do_show)
if itype == Interface.Interface.INTERFACE_TYPE_BRIDGE: if itype == Interface.Interface.INTERFACE_TYPE_BRIDGE:
self.update_bridge_desc() self.update_bridge_desc()
@ -501,7 +499,7 @@ class vmmCreateInterface(vmmGObjectUI):
self.update_ip_desc() self.update_ip_desc()
def populate_interface_list(self, itype): def populate_interface_list(self, itype):
iface_list = self.window.get_widget("interface-list") iface_list = self.widget("interface-list")
model = iface_list.get_model() model = iface_list.get_model()
model.clear() model.clear()
@ -519,7 +517,7 @@ class vmmCreateInterface(vmmGObjectUI):
elif itype == Interface.Interface.INTERFACE_TYPE_ETHERNET: elif itype == Interface.Interface.INTERFACE_TYPE_ETHERNET:
msg = _("Choose an unconfigured interface:") msg = _("Choose an unconfigured interface:")
self.window.get_widget("interface-list-text").set_text(msg) self.widget("interface-list-text").set_text(msg)
iface_list = [] iface_list = []
row_dict = {} row_dict = {}
@ -583,7 +581,7 @@ class vmmCreateInterface(vmmGObjectUI):
iface = ifaces[0][INTERFACE_ROW_NAME] iface = ifaces[0][INTERFACE_ROW_NAME]
if itype == Interface.Interface.INTERFACE_TYPE_VLAN: if itype == Interface.Interface.INTERFACE_TYPE_VLAN:
tag = self.window.get_widget("vlan-tag").get_value() tag = self.widget("vlan-tag").get_value()
name = "%s.%s" % (iface, int(tag)) name = "%s.%s" % (iface, int(tag))
elif itype == Interface.Interface.INTERFACE_TYPE_ETHERNET: elif itype == Interface.Interface.INTERFACE_TYPE_ETHERNET:
@ -597,29 +595,29 @@ class vmmCreateInterface(vmmGObjectUI):
######################### #########################
def get_config_interface_type(self): def get_config_interface_type(self):
type_list = self.window.get_widget("interface-type") type_list = self.widget("interface-type")
return type_list.get_model()[type_list.get_active()][0] return type_list.get_model()[type_list.get_active()][0]
def set_interface_name(self, name): def set_interface_name(self, name):
if self.window.get_widget("interface-name-entry").get_property("visible"): if self.widget("interface-name-entry").get_property("visible"):
widget = "interface-name-entry" widget = "interface-name-entry"
else: else:
widget = "interface-name-label" widget = "interface-name-label"
self.window.get_widget(widget).set_text(name) self.widget(widget).set_text(name)
def get_config_interface_name(self): def get_config_interface_name(self):
if self.window.get_widget("interface-name-entry").get_property("visible"): if self.widget("interface-name-entry").get_property("visible"):
return self.window.get_widget("interface-name-entry").get_text() return self.widget("interface-name-entry").get_text()
else: else:
return self.window.get_widget("interface-name-label").get_text() return self.widget("interface-name-label").get_text()
def get_config_interface_startmode(self): def get_config_interface_startmode(self):
start_list = self.window.get_widget("interface-startmode") start_list = self.widget("interface-startmode")
return start_list.get_model()[start_list.get_active()][0] return start_list.get_model()[start_list.get_active()][0]
def get_config_selected_interfaces(self): def get_config_selected_interfaces(self):
iface_list = self.window.get_widget("interface-list") iface_list = self.widget("interface-list")
model = iface_list.get_model() model = iface_list.get_model()
ret = [] ret = []
@ -714,7 +712,7 @@ class vmmCreateInterface(vmmGObjectUI):
txt = "STP %s" % (stp and "on" or "off") txt = "STP %s" % (stp and "on" or "off")
txt += ", delay %d sec" % int(delay) txt += ", delay %d sec" % int(delay)
self.window.get_widget("bridge-config-label").set_text(txt) self.widget("bridge-config-label").set_text(txt)
def update_bond_desc(self): def update_bond_desc(self):
mode_list = self.bond_config_win.get_widget("bond-mode") mode_list = self.bond_config_win.get_widget("bond-mode")
@ -729,7 +727,7 @@ class vmmCreateInterface(vmmGObjectUI):
if mon: if mon:
txt += ", %s" % mon txt += ", %s" % mon
self.window.get_widget("bond-config-label").set_text(txt) self.widget("bond-config-label").set_text(txt)
def update_ip_desc(self): def update_ip_desc(self):
is_manual, name, ipv4, ipv6, ignore = self.get_config_ip_info() is_manual, name, ipv4, ipv6, ignore = self.get_config_ip_info()
@ -763,10 +761,10 @@ class vmmCreateInterface(vmmGObjectUI):
if not label: if not label:
label = "No configuration" label = "No configuration"
self.window.get_widget("ip-config-label").set_text(label) self.widget("ip-config-label").set_text(label)
def get_config_ip_info(self): def get_config_ip_info(self):
if not self.window.get_widget("ip-label").get_property("visible"): if not self.widget("ip-label").get_property("visible"):
return [True, None, None, None, None] return [True, None, None, None, None]
if not self.validate_ip_info(): if not self.validate_ip_info():
@ -872,18 +870,18 @@ class vmmCreateInterface(vmmGObjectUI):
####################### #######################
def back(self, src): def back(self, src):
notebook = self.window.get_widget("pages") notebook = self.widget("pages")
curpage = notebook.get_current_page() curpage = notebook.get_current_page()
notebook.set_current_page(curpage - 1) notebook.set_current_page(curpage - 1)
def forward(self, ignore): def forward(self, ignore):
notebook = self.window.get_widget("pages") notebook = self.widget("pages")
curpage = notebook.get_current_page() curpage = notebook.get_current_page()
if self.validate(notebook.get_current_page()) != True: if self.validate(notebook.get_current_page()) != True:
return return
self.window.get_widget("forward").grab_focus() self.widget("forward").grab_focus()
notebook.set_current_page(curpage + 1) notebook.set_current_page(curpage + 1)
def page_changed(self, ignore1, ignore2, pagenum): def page_changed(self, ignore1, ignore2, pagenum):
@ -893,22 +891,22 @@ class vmmCreateInterface(vmmGObjectUI):
_("Step %(current_page)d of %(max_page)d") % _("Step %(current_page)d of %(max_page)d") %
{'current_page': next_page, 'max_page': PAGE_DETAILS + 1}) {'current_page': next_page, 'max_page': PAGE_DETAILS + 1})
self.window.get_widget("header-pagenum").set_markup(page_lbl) self.widget("header-pagenum").set_markup(page_lbl)
if pagenum == 0: if pagenum == 0:
self.window.get_widget("back").set_sensitive(False) self.widget("back").set_sensitive(False)
else: else:
self.window.get_widget("back").set_sensitive(True) self.widget("back").set_sensitive(True)
if pagenum == PAGE_DETAILS: if pagenum == PAGE_DETAILS:
self.populate_details_page() self.populate_details_page()
self.window.get_widget("forward").hide() self.widget("forward").hide()
self.window.get_widget("finish").show() self.widget("finish").show()
self.window.get_widget("finish").grab_focus() self.widget("finish").grab_focus()
else: else:
self.window.get_widget("forward").show() self.widget("forward").show()
self.window.get_widget("finish").hide() self.widget("finish").hide()
def validate(self, pagenum): def validate(self, pagenum):
try: try:
@ -1067,7 +1065,7 @@ class vmmCreateInterface(vmmGObjectUI):
def validate_vlan(self, iobj, ifaces): def validate_vlan(self, iobj, ifaces):
idx = self.window.get_widget("vlan-tag").get_value() idx = self.widget("vlan-tag").get_value()
iobj.tag = int(idx) iobj.tag = int(idx)
return True return True
@ -1115,11 +1113,11 @@ class vmmCreateInterface(vmmGObjectUI):
def finish(self, src): def finish(self, src):
# Validate the final page # Validate the final page
page = self.window.get_widget("pages").get_current_page() page = self.widget("pages").get_current_page()
if self.validate(page) != True: if self.validate(page) != True:
return False return False
activate = self.window.get_widget("interface-activate").get_active() activate = self.widget("interface-activate").get_active()
# Start the install # Start the install
self.topwin.set_sensitive(False) self.topwin.set_sensitive(False)

View File

@ -59,10 +59,10 @@ class vmmCreateNetwork(vmmGObjectUI):
self.bind_escape_key_close() self.bind_escape_key_close()
# XXX: Help docs useless/out of date # XXX: Help docs useless/out of date
self.window.get_widget("create-help").hide() self.widget("create-help").hide()
finish_img = gtk.image_new_from_stock(gtk.STOCK_QUIT, finish_img = gtk.image_new_from_stock(gtk.STOCK_QUIT,
gtk.ICON_SIZE_BUTTON) gtk.ICON_SIZE_BUTTON)
self.window.get_widget("create-finish").set_image(finish_img) self.widget("create-finish").set_image(finish_img)
self.set_initial_state() self.set_initial_state()
@ -87,15 +87,15 @@ class vmmCreateNetwork(vmmGObjectUI):
vmmGObjectUI.cleanup(self) vmmGObjectUI.cleanup(self)
def set_initial_state(self): def set_initial_state(self):
notebook = self.window.get_widget("create-pages") notebook = self.widget("create-pages")
notebook.set_show_tabs(False) notebook.set_show_tabs(False)
black = gtk.gdk.color_parse("#000") black = gtk.gdk.color_parse("#000")
for num in range(PAGE_SUMMARY + 1): for num in range(PAGE_SUMMARY + 1):
name = "page" + str(num) + "-title" name = "page" + str(num) + "-title"
self.window.get_widget(name).modify_bg(gtk.STATE_NORMAL, black) self.widget(name).modify_bg(gtk.STATE_NORMAL, black)
fw_list = self.window.get_widget("net-forward") fw_list = self.widget("net-forward")
# [ label, dev name ] # [ label, dev name ]
fw_model = gtk.ListStore(str, str) fw_model = gtk.ListStore(str, str)
fw_list.set_model(fw_model) fw_list.set_model(fw_model)
@ -109,7 +109,7 @@ class vmmCreateNetwork(vmmGObjectUI):
fw_model.append([_("Physical device %s") % (net.get_name()), fw_model.append([_("Physical device %s") % (net.get_name()),
net.get_name()]) net.get_name()])
mode_list = self.window.get_widget("net-forward-mode") mode_list = self.widget("net-forward-mode")
# [ label, mode ] # [ label, mode ]
mode_model = gtk.ListStore(str, str) mode_model = gtk.ListStore(str, str)
mode_list.set_model(mode_model) mode_list.set_model(mode_model)
@ -121,32 +121,32 @@ class vmmCreateNetwork(vmmGObjectUI):
mode_model.append([_("Routed"), "route"]) mode_model.append([_("Routed"), "route"])
def reset_state(self): def reset_state(self):
notebook = self.window.get_widget("create-pages") notebook = self.widget("create-pages")
notebook.set_current_page(0) notebook.set_current_page(0)
self.page_changed(None, None, 0) self.page_changed(None, None, 0)
self.window.get_widget("net-name").set_text("") self.widget("net-name").set_text("")
self.window.get_widget("net-network").set_text("192.168.100.0/24") self.widget("net-network").set_text("192.168.100.0/24")
self.window.get_widget("net-dhcp-enable").set_active(True) self.widget("net-dhcp-enable").set_active(True)
self.window.get_widget("net-dhcp-start").set_text("") self.widget("net-dhcp-start").set_text("")
self.window.get_widget("net-dhcp-end").set_text("") self.widget("net-dhcp-end").set_text("")
self.window.get_widget("net-forward-none").set_active(True) self.widget("net-forward-none").set_active(True)
self.window.get_widget("net-forward").set_active(0) self.widget("net-forward").set_active(0)
self.window.get_widget("net-forward-mode").set_active(0) self.widget("net-forward-mode").set_active(0)
def forward(self, ignore=None): def forward(self, ignore=None):
notebook = self.window.get_widget("create-pages") notebook = self.widget("create-pages")
if self.validate(notebook.get_current_page()) != True: if self.validate(notebook.get_current_page()) != True:
return return
self.window.get_widget("create-forward").grab_focus() self.widget("create-forward").grab_focus()
notebook.next_page() notebook.next_page()
def back(self, ignore=None): def back(self, ignore=None):
notebook = self.window.get_widget("create-pages") notebook = self.widget("create-pages")
notebook.prev_page() notebook.prev_page()
def change_network(self, src): def change_network(self, src):
@ -159,11 +159,11 @@ class vmmCreateNetwork(vmmGObjectUI):
# No IP specified or invalid IP # No IP specified or invalid IP
if ip is None or ip.version() != 4: if ip is None or ip.version() != 4:
src.modify_base(gtk.STATE_NORMAL, red) src.modify_base(gtk.STATE_NORMAL, red)
self.window.get_widget("net-info-netmask").set_text("") self.widget("net-info-netmask").set_text("")
self.window.get_widget("net-info-broadcast").set_text("") self.widget("net-info-broadcast").set_text("")
self.window.get_widget("net-info-gateway").set_text("") self.widget("net-info-gateway").set_text("")
self.window.get_widget("net-info-size").set_text("") self.widget("net-info-size").set_text("")
self.window.get_widget("net-info-type").set_text("") self.widget("net-info-type").set_text("")
return return
# We've got a valid IP # We've got a valid IP
@ -171,30 +171,29 @@ class vmmCreateNetwork(vmmGObjectUI):
src.modify_base(gtk.STATE_NORMAL, red) src.modify_base(gtk.STATE_NORMAL, red)
else: else:
src.modify_base(gtk.STATE_NORMAL, green) src.modify_base(gtk.STATE_NORMAL, green)
self.window.get_widget("net-info-netmask").set_text(str(ip.netmask())) self.widget("net-info-netmask").set_text(str(ip.netmask()))
self.window.get_widget("net-info-broadcast").set_text( self.widget("net-info-broadcast").set_text(str(ip.broadcast()))
str(ip.broadcast()))
if ip.len() <= 1: if ip.len() <= 1:
self.window.get_widget("net-info-gateway").set_text("") self.widget("net-info-gateway").set_text("")
else: else:
self.window.get_widget("net-info-gateway").set_text(str(ip[1])) self.widget("net-info-gateway").set_text(str(ip[1]))
self.window.get_widget("net-info-size").set_text(_("%d addresses") % self.widget("net-info-size").set_text(_("%d addresses") %
(ip.len())) (ip.len()))
if ip.iptype() == "PUBLIC": if ip.iptype() == "PUBLIC":
self.window.get_widget("net-info-type").set_text(_("Public")) self.widget("net-info-type").set_text(_("Public"))
elif ip.iptype() == "PRIVATE": elif ip.iptype() == "PRIVATE":
self.window.get_widget("net-info-type").set_text(_("Private")) self.widget("net-info-type").set_text(_("Private"))
elif ip.iptype() == "RESERVED": elif ip.iptype() == "RESERVED":
self.window.get_widget("net-info-type").set_text(_("Reserved")) self.widget("net-info-type").set_text(_("Reserved"))
else: else:
self.window.get_widget("net-info-type").set_text(_("Other")) self.widget("net-info-type").set_text(_("Other"))
def change_dhcp_enable(self, src): def change_dhcp_enable(self, src):
val = src.get_active() val = src.get_active()
self.window.get_widget("net-dhcp-start").set_sensitive(val) self.widget("net-dhcp-start").set_sensitive(val)
self.window.get_widget("net-dhcp-end").set_sensitive(val) self.widget("net-dhcp-end").set_sensitive(val)
def change_dhcp_start(self, src): def change_dhcp_start(self, src):
end = self.get_config_dhcp_start() end = self.get_config_dhcp_start()
@ -217,95 +216,89 @@ class vmmCreateNetwork(vmmGObjectUI):
src.modify_base(gtk.STATE_NORMAL, green) src.modify_base(gtk.STATE_NORMAL, green)
def change_forward_type(self, src_ignore): def change_forward_type(self, src_ignore):
skip_fwd = self.window.get_widget("net-forward-none").get_active() skip_fwd = self.widget("net-forward-none").get_active()
self.window.get_widget("net-forward-mode").set_sensitive(not skip_fwd) self.widget("net-forward-mode").set_sensitive(not skip_fwd)
self.window.get_widget("net-forward").set_sensitive(not skip_fwd) self.widget("net-forward").set_sensitive(not skip_fwd)
def get_config_name(self): def get_config_name(self):
return self.window.get_widget("net-name").get_text() return self.widget("net-name").get_text()
def get_config_ip4(self): def get_config_ip4(self):
try: try:
return IP(self.window.get_widget("net-network").get_text()) return IP(self.widget("net-network").get_text())
except: except:
return None return None
def get_config_dhcp_start(self): def get_config_dhcp_start(self):
try: try:
return IP(self.window.get_widget("net-dhcp-start").get_text()) return IP(self.widget("net-dhcp-start").get_text())
except: except:
return None return None
def get_config_dhcp_end(self): def get_config_dhcp_end(self):
try: try:
return IP(self.window.get_widget("net-dhcp-end").get_text()) return IP(self.widget("net-dhcp-end").get_text())
except: except:
return None return None
def get_config_forwarding(self): def get_config_forwarding(self):
if self.window.get_widget("net-forward-none").get_active(): if self.widget("net-forward-none").get_active():
return [None, None] return [None, None]
else: else:
dev = self.window.get_widget("net-forward") dev = self.widget("net-forward")
model = dev.get_model() model = dev.get_model()
active = dev.get_active() active = dev.get_active()
name = model[active][1] name = model[active][1]
mode_w = self.window.get_widget("net-forward-mode") mode_w = self.widget("net-forward-mode")
mode = mode_w.get_model()[mode_w.get_active()][1] mode = mode_w.get_model()[mode_w.get_active()][1]
return [name, mode] return [name, mode]
def get_config_dhcp_enable(self): def get_config_dhcp_enable(self):
return self.window.get_widget("net-dhcp-enable").get_active() return self.widget("net-dhcp-enable").get_active()
def populate_summary(self): def populate_summary(self):
dodhcp = self.get_config_dhcp_enable() dodhcp = self.get_config_dhcp_enable()
self.window.get_widget("summary-name").set_text(self.get_config_name()) self.widget("summary-name").set_text(self.get_config_name())
ip = self.get_config_ip4() ip = self.get_config_ip4()
self.window.get_widget("summary-ip4-network").set_text(str(ip)) self.widget("summary-ip4-network").set_text(str(ip))
self.window.get_widget("summary-ip4-gateway").set_text(str(ip[1])) self.widget("summary-ip4-gateway").set_text(str(ip[1]))
self.window.get_widget("summary-ip4-netmask").set_text( self.widget("summary-ip4-netmask").set_text(str(ip.netmask()))
str(ip.netmask()))
self.window.get_widget("label-dhcp-end").set_property("visible", self.widget("label-dhcp-end").set_property("visible", dodhcp)
dodhcp) self.widget("summary-dhcp-end").set_property("visible", dodhcp)
self.window.get_widget("summary-dhcp-end").set_property("visible",
dodhcp)
if dodhcp: if dodhcp:
start = self.get_config_dhcp_start() start = self.get_config_dhcp_start()
end = self.get_config_dhcp_end() end = self.get_config_dhcp_end()
self.window.get_widget("summary-dhcp-start").set_text(str(start)) self.widget("summary-dhcp-start").set_text(str(start))
self.window.get_widget("summary-dhcp-end").set_text(str(end)) self.widget("summary-dhcp-end").set_text(str(end))
self.window.get_widget("label-dhcp-start").set_text( self.widget("label-dhcp-start").set_text(_("Start address:"))
_("Start address:")) self.widget("label-dhcp-end").show()
self.window.get_widget("label-dhcp-end").show() self.widget("summary-dhcp-end").show()
self.window.get_widget("summary-dhcp-end").show()
else: else:
self.window.get_widget("label-dhcp-start").set_text( self.widget("label-dhcp-start").set_text(_("Status:"))
_("Status:")) self.widget("summary-dhcp-start").set_text(_("Disabled"))
self.window.get_widget("summary-dhcp-start").set_text(
_("Disabled"))
forward_txt = "" forward_txt = ""
dev, mode = self.get_config_forwarding() dev, mode = self.get_config_forwarding()
forward_txt = vmmNetwork.pretty_desc(mode, dev) forward_txt = vmmNetwork.pretty_desc(mode, dev)
self.window.get_widget("summary-forwarding").set_text(forward_txt) self.widget("summary-forwarding").set_text(forward_txt)
def populate_dhcp(self): def populate_dhcp(self):
ip = self.get_config_ip4() ip = self.get_config_ip4()
start = int(ip.len() / 2) start = int(ip.len() / 2)
end = ip.len() - 2 end = ip.len() - 2
if self.window.get_widget("net-dhcp-start").get_text() == "": if self.widget("net-dhcp-start").get_text() == "":
self.window.get_widget("net-dhcp-start").set_text(str(ip[start])) self.widget("net-dhcp-start").set_text(str(ip[start]))
if self.window.get_widget("net-dhcp-end").get_text() == "": if self.widget("net-dhcp-end").get_text() == "":
self.window.get_widget("net-dhcp-end").set_text(str(ip[end])) self.widget("net-dhcp-end").set_text(str(ip[end]))
def page_changed(self, ignore1, ignore2, page_number): def page_changed(self, ignore1, ignore2, page_number):
if page_number == PAGE_NAME: if page_number == PAGE_NAME:
name_widget = self.window.get_widget("net-name") name_widget = self.widget("net-name")
name_widget.grab_focus() name_widget.grab_focus()
elif page_number == PAGE_DHCP: elif page_number == PAGE_DHCP:
self.populate_dhcp() self.populate_dhcp()
@ -313,17 +306,17 @@ class vmmCreateNetwork(vmmGObjectUI):
self.populate_summary() self.populate_summary()
if page_number == PAGE_INTRO: if page_number == PAGE_INTRO:
self.window.get_widget("create-back").set_sensitive(False) self.widget("create-back").set_sensitive(False)
else: else:
self.window.get_widget("create-back").set_sensitive(True) self.widget("create-back").set_sensitive(True)
if page_number == PAGE_SUMMARY: if page_number == PAGE_SUMMARY:
self.window.get_widget("create-forward").hide() self.widget("create-forward").hide()
self.window.get_widget("create-finish").show() self.widget("create-finish").show()
self.window.get_widget("create-finish").grab_focus() self.widget("create-finish").grab_focus()
else: else:
self.window.get_widget("create-forward").show() self.widget("create-forward").show()
self.window.get_widget("create-finish").hide() self.widget("create-finish").hide()
def finish(self, ignore=None): def finish(self, ignore=None):
@ -366,7 +359,7 @@ class vmmCreateNetwork(vmmGObjectUI):
self.close() self.close()
def validate_name(self): def validate_name(self):
name = self.window.get_widget("net-name").get_text() name = self.widget("net-name").get_text()
if len(name) > 50 or len(name) == 0: if len(name) > 50 or len(name) == 0:
return self.err.val_err(_("Invalid Network Name"), return self.err.val_err(_("Invalid Network Name"),
_("Network name must be non-blank and less than " _("Network name must be non-blank and less than "
@ -404,7 +397,7 @@ class vmmCreateNetwork(vmmGObjectUI):
ip = self.get_config_ip4() ip = self.get_config_ip4()
start = self.get_config_dhcp_start() start = self.get_config_dhcp_start()
end = self.get_config_dhcp_end() end = self.get_config_dhcp_end()
enabled = self.window.get_widget("net-dhcp-enable").get_active() enabled = self.widget("net-dhcp-enable").get_active()
if enabled and start is None: if enabled and start is None:
return self.err.val_err(_("Invalid DHCP Address"), return self.err.val_err(_("Invalid DHCP Address"),
@ -424,10 +417,10 @@ class vmmCreateNetwork(vmmGObjectUI):
return True return True
def validate_forwarding(self): def validate_forwarding(self):
if not self.window.get_widget("net-forward-dev").get_active(): if not self.widget("net-forward-dev").get_active():
return True return True
dev = self.window.get_widget("net-forward") dev = self.widget("net-forward")
if dev.get_active() == -1: if dev.get_active() == -1:
return self.err.val_err(_("Invalid forwarding mode"), return self.err.val_err(_("Invalid forwarding mode"),
_("Please select where the traffic should be forwarded")) _("Please select where the traffic should be forwarded"))
@ -446,7 +439,7 @@ class vmmCreateNetwork(vmmGObjectUI):
def show_help(self, src_ignore): def show_help(self, src_ignore):
# help to show depends on the notebook page, yahoo # help to show depends on the notebook page, yahoo
page = self.window.get_widget("create-pages").get_current_page() page = self.widget("create-pages").get_current_page()
if page == PAGE_INTRO: if page == PAGE_INTRO:
self.emit("action-show-help", "virt-manager-create-net-intro") self.emit("action-show-help", "virt-manager-create-net-intro")
elif page == PAGE_NAME: elif page == PAGE_NAME:

View File

@ -93,10 +93,10 @@ class vmmCreatePool(vmmGObjectUI):
self.bind_escape_key_close() self.bind_escape_key_close()
# XXX: Help docs useless/out of date # XXX: Help docs useless/out of date
self.window.get_widget("pool-help").hide() self.widget("pool-help").hide()
finish_img = gtk.image_new_from_stock(gtk.STOCK_QUIT, finish_img = gtk.image_new_from_stock(gtk.STOCK_QUIT,
gtk.ICON_SIZE_BUTTON) gtk.ICON_SIZE_BUTTON)
self.window.get_widget("pool-finish").set_image(finish_img) self.widget("pool-finish").set_image(finish_img)
self.set_initial_state() self.set_initial_state()
@ -118,16 +118,16 @@ class vmmCreatePool(vmmGObjectUI):
vmmGObjectUI.cleanup(self) vmmGObjectUI.cleanup(self)
def set_initial_state(self): def set_initial_state(self):
self.window.get_widget("pool-pages").set_show_tabs(False) self.widget("pool-pages").set_show_tabs(False)
type_list = self.window.get_widget("pool-type") type_list = self.widget("pool-type")
type_model = gtk.ListStore(str, str) type_model = gtk.ListStore(str, str)
type_list.set_model(type_model) type_list.set_model(type_model)
text1 = gtk.CellRendererText() text1 = gtk.CellRendererText()
type_list.pack_start(text1, True) type_list.pack_start(text1, True)
type_list.add_attribute(text1, 'text', 1) type_list.add_attribute(text1, 'text', 1)
format_list = self.window.get_widget("pool-format") format_list = self.widget("pool-format")
format_model = gtk.ListStore(str, str) format_model = gtk.ListStore(str, str)
format_list.set_model(format_model) format_list.set_model(format_model)
text2 = gtk.CellRendererText() text2 = gtk.CellRendererText()
@ -135,7 +135,7 @@ class vmmCreatePool(vmmGObjectUI):
format_list.add_attribute(text2, 'text', 1) format_list.add_attribute(text2, 'text', 1)
# Target path combo box entry # Target path combo box entry
target_list = self.window.get_widget("pool-target-path") target_list = self.widget("pool-target-path")
# target_path, Label, pool class instance # target_path, Label, pool class instance
target_model = gtk.ListStore(str, str, object) target_model = gtk.ListStore(str, str, object)
target_model.set_sort_column_id(0, gtk.SORT_ASCENDING) target_model.set_sort_column_id(0, gtk.SORT_ASCENDING)
@ -145,7 +145,7 @@ class vmmCreatePool(vmmGObjectUI):
"target_path", "pool-info2") "target_path", "pool-info2")
# Source path combo box entry # Source path combo box entry
source_list = self.window.get_widget("pool-source-path") source_list = self.widget("pool-source-path")
# source_path, Label, pool class instance # source_path, Label, pool class instance
source_model = gtk.ListStore(str, str, object) source_model = gtk.ListStore(str, str, object)
source_model.set_sort_column_id(0, gtk.SORT_ASCENDING) source_model.set_sort_column_id(0, gtk.SORT_ASCENDING)
@ -156,24 +156,26 @@ class vmmCreatePool(vmmGObjectUI):
self.populate_pool_type() self.populate_pool_type()
self.window.get_widget("pool-info-box1").modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("grey")) self.widget("pool-info-box1").modify_bg(gtk.STATE_NORMAL,
self.window.get_widget("pool-info-box2").modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("grey")) gtk.gdk.color_parse("grey"))
self.widget("pool-info-box2").modify_bg(gtk.STATE_NORMAL,
gtk.gdk.color_parse("grey"))
def reset_state(self): def reset_state(self):
self.window.get_widget("pool-pages").set_current_page(0) self.widget("pool-pages").set_current_page(0)
self.window.get_widget("pool-forward").show() self.widget("pool-forward").show()
self.window.get_widget("pool-finish").hide() self.widget("pool-finish").hide()
self.window.get_widget("pool-back").set_sensitive(False) self.widget("pool-back").set_sensitive(False)
self.window.get_widget("pool-name").set_text("") self.widget("pool-name").set_text("")
self.window.get_widget("pool-name").grab_focus() self.widget("pool-name").grab_focus()
self.window.get_widget("pool-type").set_active(0) self.widget("pool-type").set_active(0)
self.window.get_widget("pool-target-path").child.set_text("") self.widget("pool-target-path").child.set_text("")
self.window.get_widget("pool-source-path").child.set_text("") self.widget("pool-source-path").child.set_text("")
self.window.get_widget("pool-hostname").set_text("") self.widget("pool-hostname").set_text("")
self.window.get_widget("pool-format").set_active(-1) self.widget("pool-format").set_active(-1)
self.window.get_widget("pool-build").set_sensitive(True) self.widget("pool-build").set_sensitive(True)
self.window.get_widget("pool-build").set_active(False) self.widget("pool-build").set_active(False)
def hostname_changed(self, ignore): def hostname_changed(self, ignore):
@ -181,25 +183,26 @@ class vmmCreatePool(vmmGObjectUI):
self.populate_pool_sources() self.populate_pool_sources()
def populate_pool_type(self): def populate_pool_type(self):
model = self.window.get_widget("pool-type").get_model() model = self.widget("pool-type").get_model()
model.clear() model.clear()
types = Storage.StoragePool.get_pool_types() types = Storage.StoragePool.get_pool_types()
types.sort() types.sort()
for typ in types: for typ in types:
model.append([typ, "%s: %s" % (typ, Storage.StoragePool.get_pool_type_desc(typ))]) model.append([typ, "%s: %s" %
(typ, Storage.StoragePool.get_pool_type_desc(typ))])
def populate_pool_format(self, formats): def populate_pool_format(self, formats):
model = self.window.get_widget("pool-format").get_model() model = self.widget("pool-format").get_model()
model.clear() model.clear()
for f in formats: for f in formats:
model.append([f, f]) model.append([f, f])
def populate_pool_sources(self): def populate_pool_sources(self):
source_list = self.window.get_widget("pool-source-path") source_list = self.widget("pool-source-path")
source_model = source_list.get_model() source_model = source_list.get_model()
source_model.clear() source_model.clear()
target_list = self.window.get_widget("pool-target-path") target_list = self.widget("pool-target-path")
target_model = target_list.get_model() target_model = target_list.get_model()
target_model.clear() target_model.clear()
@ -278,31 +281,31 @@ class vmmCreatePool(vmmGObjectUI):
Storage.StoragePool.TYPE_SCSI]: Storage.StoragePool.TYPE_SCSI]:
src_b = False src_b = False
self.window.get_widget("pool-target-button").set_sensitive(tgt_b) self.widget("pool-target-button").set_sensitive(tgt_b)
self.window.get_widget("pool-source-button").set_sensitive(src_b) self.widget("pool-source-button").set_sensitive(src_b)
self.window.get_widget("pool-source-path").set_sensitive(src) self.widget("pool-source-path").set_sensitive(src)
self.window.get_widget("pool-hostname").set_sensitive(host) self.widget("pool-hostname").set_sensitive(host)
self.window.get_widget("pool-format").set_sensitive(fmt) self.widget("pool-format").set_sensitive(fmt)
self.window.get_widget("pool-format").set_active(-1) self.widget("pool-format").set_active(-1)
if fmt: if fmt:
self.populate_pool_format(getattr(self._pool, "formats")) self.populate_pool_format(getattr(self._pool, "formats"))
self.window.get_widget("pool-format").set_active(0) self.widget("pool-format").set_active(0)
self.populate_pool_sources() self.populate_pool_sources()
def get_config_type(self): def get_config_type(self):
typ = self.window.get_widget("pool-type") typ = self.widget("pool-type")
if typ.get_active_iter() != None: if typ.get_active_iter() != None:
return typ.get_model().get_value(typ.get_active_iter(), 0) return typ.get_model().get_value(typ.get_active_iter(), 0)
return None return None
def get_config_name(self): def get_config_name(self):
return self.window.get_widget("pool-name").get_text() return self.widget("pool-name").get_text()
def get_config_target_path(self): def get_config_target_path(self):
src = self.window.get_widget("pool-target-path") src = self.widget("pool-target-path")
if not src.get_property("sensitive"): if not src.get_property("sensitive"):
return None return None
@ -315,7 +318,7 @@ class vmmCreatePool(vmmGObjectUI):
return src.child.get_text() return src.child.get_text()
def get_config_source_path(self): def get_config_source_path(self):
src = self.window.get_widget("pool-source-path") src = self.widget("pool-source-path")
if not src.get_property("sensitive"): if not src.get_property("sensitive"):
return None return None
@ -328,13 +331,13 @@ class vmmCreatePool(vmmGObjectUI):
return src.child.get_text().strip() return src.child.get_text().strip()
def get_config_host(self): def get_config_host(self):
host = self.window.get_widget("pool-hostname") host = self.widget("pool-hostname")
if host.get_property("sensitive"): if host.get_property("sensitive"):
return host.get_text().strip() return host.get_text().strip()
return None return None
def get_config_format(self): def get_config_format(self):
format_combo = self.window.get_widget("pool-format") format_combo = self.widget("pool-format")
model = format_combo.get_model() model = format_combo.get_model()
if format_combo.get_active_iter() != None: if format_combo.get_active_iter() != None:
model = format_combo.get_model() model = format_combo.get_model()
@ -363,34 +366,34 @@ class vmmCreatePool(vmmGObjectUI):
source = self._browse_file(_("Choose source path"), source = self._browse_file(_("Choose source path"),
startfolder="/dev", foldermode=False) startfolder="/dev", foldermode=False)
if source: if source:
self.window.get_widget("pool-source-path").child.set_text(source) self.widget("pool-source-path").child.set_text(source)
def browse_target_path(self, ignore1=None): def browse_target_path(self, ignore1=None):
target = self._browse_file(_("Choose target directory"), target = self._browse_file(_("Choose target directory"),
startfolder="/var/lib/libvirt", startfolder="/var/lib/libvirt",
foldermode=True) foldermode=True)
if target: if target:
self.window.get_widget("pool-target-path").child.set_text(target) self.widget("pool-target-path").child.set_text(target)
def forward(self, ignore=None): def forward(self, ignore=None):
notebook = self.window.get_widget("pool-pages") notebook = self.widget("pool-pages")
try: try:
if(self.validate(notebook.get_current_page()) != True): if(self.validate(notebook.get_current_page()) != True):
return return
if notebook.get_current_page() == PAGE_FORMAT: if notebook.get_current_page() == PAGE_FORMAT:
self.finish() self.finish()
else: else:
self.window.get_widget("pool-forward").grab_focus() self.widget("pool-forward").grab_focus()
notebook.next_page() notebook.next_page()
except Exception, e: except Exception, e:
self.err.show_err(_("Uncaught error validating input: %s") % str(e)) self.err.show_err(_("Uncaught error validating input: %s") % str(e))
return return
def back(self, ignore=None): def back(self, ignore=None):
self.window.get_widget("pool-finish").hide() self.widget("pool-finish").hide()
self.window.get_widget("pool-forward").show() self.widget("pool-forward").show()
self.window.get_widget("pool-pages").prev_page() self.widget("pool-pages").prev_page()
def finish(self): def finish(self):
self.topwin.set_sensitive(False) self.topwin.set_sensitive(False)
@ -422,26 +425,27 @@ class vmmCreatePool(vmmGObjectUI):
self._pool.conn = newconn self._pool.conn = newconn
logging.debug("Starting backround pool creation.") logging.debug("Starting backround pool creation.")
build = self.window.get_widget("pool-build").get_active() build = self.widget("pool-build").get_active()
poolobj = self._pool.install(create=True, meter=meter, build=build) poolobj = self._pool.install(create=True, meter=meter, build=build)
poolobj.setAutostart(True) poolobj.setAutostart(True)
logging.debug("Pool creation succeeded") logging.debug("Pool creation succeeded")
def page_changed(self, notebook_ignore, page_ignore, page_number): def page_changed(self, notebook_ignore, page_ignore, page_number):
if page_number == PAGE_NAME: if page_number == PAGE_NAME:
self.window.get_widget("pool-back").set_sensitive(False) self.widget("pool-back").set_sensitive(False)
self.window.get_widget("pool-finish").hide() self.widget("pool-finish").hide()
self.window.get_widget("pool-forward").show() self.widget("pool-forward").show()
self.window.get_widget("pool-forward").grab_focus() self.widget("pool-forward").grab_focus()
elif page_number == PAGE_FORMAT: elif page_number == PAGE_FORMAT:
self.window.get_widget("pool-target-path").child.set_text(self._pool.target_path) self.widget("pool-target-path").child.set_text(
self.window.get_widget("pool-back").set_sensitive(True) self._pool.target_path)
self.widget("pool-back").set_sensitive(True)
buildret = self.get_build_default() buildret = self.get_build_default()
self.window.get_widget("pool-build").set_sensitive(buildret[1]) self.widget("pool-build").set_sensitive(buildret[1])
self.window.get_widget("pool-build").set_active(buildret[0]) self.widget("pool-build").set_active(buildret[0])
self.window.get_widget("pool-finish").show() self.widget("pool-finish").show()
self.window.get_widget("pool-finish").grab_focus() self.widget("pool-finish").grab_focus()
self.window.get_widget("pool-forward").hide() self.widget("pool-forward").hide()
self.show_options_by_pool() self.show_options_by_pool()
def get_pool_to_validate(self): def get_pool_to_validate(self):
@ -450,8 +454,8 @@ class vmmCreatePool(vmmGObjectUI):
For most pools this will be the one we built after step 1, but for For most pools this will be the one we built after step 1, but for
pools we find via FindPoolSources, this will be different pools we find via FindPoolSources, this will be different
""" """
source_list = self.window.get_widget("pool-source-path") source_list = self.widget("pool-source-path")
target_list = self.window.get_widget("pool-target-path") target_list = self.widget("pool-target-path")
pool = copy.copy(self._pool) pool = copy.copy(self._pool)
@ -496,9 +500,8 @@ class vmmCreatePool(vmmGObjectUI):
except ValueError, e: except ValueError, e:
return self.err.val_err(_("Pool Parameter Error"), str(e)) return self.err.val_err(_("Pool Parameter Error"), str(e))
buildval = self.window.get_widget("pool-build").get_active() buildval = self.widget("pool-build").get_active()
buildsen = self.window.get_widget("pool-build").get_property( buildsen = self.widget("pool-build").get_property("sensitive")
"sensitive")
if buildsen and buildval: if buildsen and buildval:
ret = self.err.yes_no(_("Building a pool of this type will " ret = self.err.yes_no(_("Building a pool of this type will "
"format the source device. Are you " "format the source device. Are you "
@ -511,7 +514,7 @@ class vmmCreatePool(vmmGObjectUI):
def update_doc(self, ignore1, ignore2, param, infobox): def update_doc(self, ignore1, ignore2, param, infobox):
doc = self._build_doc_str(param) doc = self._build_doc_str(param)
self.window.get_widget(infobox).set_markup(doc) self.widget(infobox).set_markup(doc)
def update_build_doc(self, ignore1, ignore2): def update_build_doc(self, ignore1, ignore2):
doc = "" doc = ""
@ -523,7 +526,7 @@ class vmmCreatePool(vmmGObjectUI):
if docstr: if docstr:
doc = self._build_doc_str("build", docstr) doc = self._build_doc_str("build", docstr)
self.window.get_widget("pool-info2").set_markup(doc) self.widget("pool-info2").set_markup(doc)
def update_doc_changed(self, ignore1, param, infobox): def update_doc_changed(self, ignore1, param, infobox):
# Wrapper for update_doc and 'changed' signal # Wrapper for update_doc and 'changed' signal

View File

@ -52,20 +52,20 @@ class vmmCreateVolume(vmmGObjectUI):
}) })
self.bind_escape_key_close() self.bind_escape_key_close()
format_list = self.window.get_widget("vol-format") format_list = self.widget("vol-format")
format_model = gtk.ListStore(str, str) format_model = gtk.ListStore(str, str)
format_list.set_model(format_model) format_list.set_model(format_model)
text2 = gtk.CellRendererText() text2 = gtk.CellRendererText()
format_list.pack_start(text2, False) format_list.pack_start(text2, False)
format_list.add_attribute(text2, 'text', 1) format_list.add_attribute(text2, 'text', 1)
self.window.get_widget("vol-info-view").modify_bg(gtk.STATE_NORMAL, self.widget("vol-info-view").modify_bg(gtk.STATE_NORMAL,
gtk.gdk.color_parse("grey")) gtk.gdk.color_parse("grey"))
# XXX: Help docs useless/out of date # XXX: Help docs useless/out of date
self.window.get_widget("pool-help").hide() self.widget("pool-help").hide()
finish_img = gtk.image_new_from_stock(gtk.STOCK_QUIT, finish_img = gtk.image_new_from_stock(gtk.STOCK_QUIT,
gtk.ICON_SIZE_BUTTON) gtk.ICON_SIZE_BUTTON)
self.window.get_widget("vol-create").set_image(finish_img) self.widget("vol-create").set_image(finish_img)
self.reset_state() self.reset_state()
@ -125,32 +125,36 @@ class vmmCreateVolume(vmmGObjectUI):
def reset_state(self): def reset_state(self):
default_name = self.default_vol_name() default_name = self.default_vol_name()
self.window.get_widget("vol-name").set_text("") self.widget("vol-name").set_text("")
self.window.get_widget("vol-create").set_sensitive(False) self.widget("vol-create").set_sensitive(False)
if default_name: if default_name:
self.window.get_widget("vol-name").set_text(default_name) self.widget("vol-name").set_text(default_name)
self.window.get_widget("vol-name").grab_focus() self.widget("vol-name").grab_focus()
self.populate_vol_format() self.populate_vol_format()
self.populate_vol_suffix() self.populate_vol_suffix()
if len(self.vol_class.formats): if len(self.vol_class.formats):
self.window.get_widget("vol-format").set_sensitive(True) self.widget("vol-format").set_sensitive(True)
self.window.get_widget("vol-format").set_active(0) self.widget("vol-format").set_active(0)
else: else:
self.window.get_widget("vol-format").set_sensitive(False) self.widget("vol-format").set_sensitive(False)
self.window.get_widget("vol-allocation").set_range(0, int(self.parent_pool.get_available() / 1024 / 1024)) self.widget("vol-allocation").set_range(0,
self.window.get_widget("vol-allocation").set_value(DEFAULT_ALLOC) int(self.parent_pool.get_available() / 1024 / 1024))
self.window.get_widget("vol-capacity").set_range(1, int(self.parent_pool.get_available() / 1024 / 1024)) self.widget("vol-allocation").set_value(DEFAULT_ALLOC)
self.window.get_widget("vol-capacity").set_value(DEFAULT_CAP) self.widget("vol-capacity").set_range(1,
int(self.parent_pool.get_available() / 1024 / 1024))
self.widget("vol-capacity").set_value(DEFAULT_CAP)
self.window.get_widget("vol-parent-name").set_markup("<b>" + self.parent_pool.get_name() + "'s</b>") self.widget("vol-parent-name").set_markup(
self.window.get_widget("vol-parent-space").set_text(self.parent_pool.get_pretty_available()) "<b>" + self.parent_pool.get_name() + "'s</b>")
self.widget("vol-parent-space").set_text(
self.parent_pool.get_pretty_available())
def get_config_format(self): def get_config_format(self):
format_combo = self.window.get_widget("vol-format") format_combo = self.widget("vol-format")
model = format_combo.get_model() model = format_combo.get_model()
if format_combo.get_active_iter() != None: if format_combo.get_active_iter() != None:
model = format_combo.get_model() model = format_combo.get_model()
@ -158,7 +162,7 @@ class vmmCreateVolume(vmmGObjectUI):
return None return None
def populate_vol_format(self): def populate_vol_format(self):
model = self.window.get_widget("vol-format").get_model() model = self.widget("vol-format").get_model()
model.clear() model.clear()
formats = self.vol_class.formats formats = self.vol_class.formats
@ -172,14 +176,14 @@ class vmmCreateVolume(vmmGObjectUI):
suffix = self.default_suffix() suffix = self.default_suffix()
if self.vol_class == Storage.FileVolume: if self.vol_class == Storage.FileVolume:
suffix = ".img" suffix = ".img"
self.window.get_widget("vol-name-suffix").set_text(suffix) self.widget("vol-name-suffix").set_text(suffix)
def vol_name_changed(self, src): def vol_name_changed(self, src):
text = src.get_text() text = src.get_text()
self.window.get_widget("vol-create").set_sensitive(bool(text)) self.widget("vol-create").set_sensitive(bool(text))
def vol_allocation_changed(self, src): def vol_allocation_changed(self, src):
cap_widget = self.window.get_widget("vol-capacity") cap_widget = self.widget("vol-capacity")
alloc = src.get_value() alloc = src.get_value()
cap = cap_widget.get_value() cap = cap_widget.get_value()
@ -188,10 +192,10 @@ class vmmCreateVolume(vmmGObjectUI):
cap_widget.set_value(alloc) cap_widget.set_value(alloc)
def vol_capacity_changed(self, src): def vol_capacity_changed(self, src):
alloc_widget = self.window.get_widget("vol-allocation") alloc_widget = self.widget("vol-allocation")
cap = src.get_value() cap = src.get_value()
alloc = self.window.get_widget("vol-allocation").get_value() alloc = self.widget("vol-allocation").get_value()
if cap < alloc: if cap < alloc:
alloc_widget.set_value(cap) alloc_widget.set_value(cap)
@ -240,12 +244,12 @@ class vmmCreateVolume(vmmGObjectUI):
self.vol.install(meter=meter) self.vol.install(meter=meter)
def validate(self): def validate(self):
name = self.window.get_widget("vol-name").get_text() name = self.widget("vol-name").get_text()
suffix = self.window.get_widget("vol-name-suffix").get_text() suffix = self.widget("vol-name-suffix").get_text()
volname = name + suffix volname = name + suffix
fmt = self.get_config_format() fmt = self.get_config_format()
alloc = self.window.get_widget("vol-allocation").get_value() alloc = self.widget("vol-allocation").get_value()
cap = self.window.get_widget("vol-capacity").get_value() cap = self.widget("vol-capacity").get_value()
try: try:
self.vol = self.vol_class(name=volname, self.vol = self.vol_class(name=volname,

View File

@ -58,13 +58,13 @@ class vmmDeleteDialog(vmmGObjectUI):
image = gtk.image_new_from_icon_name("vm_delete_wizard", image = gtk.image_new_from_icon_name("vm_delete_wizard",
gtk.ICON_SIZE_DIALOG) gtk.ICON_SIZE_DIALOG)
image.show() image.show()
self.window.get_widget("icon-box").pack_end(image, False) self.widget("icon-box").pack_end(image, False)
prepare_storage_list(self.window.get_widget("delete-storage-list")) prepare_storage_list(self.widget("delete-storage-list"))
def toggle_remove_storage(self, src): def toggle_remove_storage(self, src):
dodel = src.get_active() dodel = src.get_active()
self.window.get_widget("delete-storage-list").set_sensitive(dodel) self.widget("delete-storage-list").set_sensitive(dodel)
def show(self, vm, parent): def show(self, vm, parent):
@ -94,19 +94,19 @@ class vmmDeleteDialog(vmmGObjectUI):
# Set VM name in title' # Set VM name in title'
title_str = ("<span size='x-large'>%s '%s'</span>" % title_str = ("<span size='x-large'>%s '%s'</span>" %
(_("Delete"), self.vm.get_name())) (_("Delete"), self.vm.get_name()))
self.window.get_widget("delete-main-label").set_markup(title_str) self.widget("delete-main-label").set_markup(title_str)
self.window.get_widget("delete-cancel").grab_focus() self.widget("delete-cancel").grab_focus()
# Disable storage removal by default # Disable storage removal by default
self.window.get_widget("delete-remove-storage").set_active(False) self.widget("delete-remove-storage").set_active(False)
self.window.get_widget("delete-remove-storage").toggled() self.widget("delete-remove-storage").toggled()
populate_storage_list(self.window.get_widget("delete-storage-list"), populate_storage_list(self.widget("delete-storage-list"),
self.vm, self.conn) self.vm, self.conn)
def get_config_format(self): def get_config_format(self):
format_combo = self.window.get_widget("vol-format") format_combo = self.widget("vol-format")
model = format_combo.get_model() model = format_combo.get_model()
if format_combo.get_active_iter() != None: if format_combo.get_active_iter() != None:
model = format_combo.get_model() model = format_combo.get_model()
@ -114,11 +114,11 @@ class vmmDeleteDialog(vmmGObjectUI):
return None return None
def get_paths_to_delete(self): def get_paths_to_delete(self):
del_list = self.window.get_widget("delete-storage-list") del_list = self.widget("delete-storage-list")
model = del_list.get_model() model = del_list.get_model()
paths = [] paths = []
if self.window.get_widget("delete-remove-storage").get_active(): if self.widget("delete-remove-storage").get_active():
for row in model: for row in model:
if (not row[STORAGE_ROW_CANT_DELETE] and if (not row[STORAGE_ROW_CANT_DELETE] and
row[STORAGE_ROW_CONFIRM]): row[STORAGE_ROW_CONFIRM]):

File diff suppressed because it is too large Load Diff

View File

@ -62,9 +62,12 @@ class vmmHost(vmmGObjectUI):
self.init_conn_state() self.init_conn_state()
# Set up signals # Set up signals
self.window.get_widget("net-list").get_selection().connect("changed", self.net_selected) self.widget("net-list").get_selection().connect("changed",
self.window.get_widget("vol-list").get_selection().connect("changed", self.vol_selected) self.net_selected)
self.window.get_widget("interface-list").get_selection().connect("changed", self.interface_selected) self.widget("vol-list").get_selection().connect("changed",
self.vol_selected)
self.widget("interface-list").get_selection().connect("changed",
self.interface_selected)
self.init_net_state() self.init_net_state()
@ -126,24 +129,24 @@ class vmmHost(vmmGObjectUI):
}) })
# XXX: Help docs useless/out of date # XXX: Help docs useless/out of date
self.window.get_widget("help_menuitem").hide() self.widget("help_menuitem").hide()
finish_img = gtk.image_new_from_stock(gtk.STOCK_DELETE, finish_img = gtk.image_new_from_stock(gtk.STOCK_DELETE,
gtk.ICON_SIZE_BUTTON) gtk.ICON_SIZE_BUTTON)
self.window.get_widget("vol-delete").set_image(finish_img) self.widget("vol-delete").set_image(finish_img)
finish_img = gtk.image_new_from_stock(gtk.STOCK_NEW, finish_img = gtk.image_new_from_stock(gtk.STOCK_NEW,
gtk.ICON_SIZE_BUTTON) gtk.ICON_SIZE_BUTTON)
self.window.get_widget("vol-add").set_image(finish_img) self.widget("vol-add").set_image(finish_img)
self.conn.connect("resources-sampled", self.refresh_resources) self.conn.connect("resources-sampled", self.refresh_resources)
self.reset_state() self.reset_state()
def init_net_state(self): def init_net_state(self):
self.window.get_widget("network-pages").set_show_tabs(False) self.widget("network-pages").set_show_tabs(False)
# [ unique, label, icon name, icon size, is_active ] # [ unique, label, icon name, icon size, is_active ]
netListModel = gtk.ListStore(str, str, str, int, bool) netListModel = gtk.ListStore(str, str, str, int, bool)
self.window.get_widget("net-list").set_model(netListModel) self.widget("net-list").set_model(netListModel)
netCol = gtk.TreeViewColumn("Networks") netCol = gtk.TreeViewColumn("Networks")
netCol.set_spacing(6) netCol.set_spacing(6)
@ -155,13 +158,13 @@ class vmmHost(vmmGObjectUI):
netCol.add_attribute(net_txt, 'sensitive', 4) netCol.add_attribute(net_txt, 'sensitive', 4)
netCol.add_attribute(net_img, 'icon-name', 2) netCol.add_attribute(net_img, 'icon-name', 2)
netCol.add_attribute(net_img, 'stock-size', 3) netCol.add_attribute(net_img, 'stock-size', 3)
self.window.get_widget("net-list").append_column(netCol) self.widget("net-list").append_column(netCol)
netListModel.set_sort_column_id(1, gtk.SORT_ASCENDING) netListModel.set_sort_column_id(1, gtk.SORT_ASCENDING)
self.populate_networks(netListModel) self.populate_networks(netListModel)
def init_storage_state(self): def init_storage_state(self):
self.window.get_widget("storage-pages").set_show_tabs(False) self.widget("storage-pages").set_show_tabs(False)
self.volmenu = gtk.Menu() self.volmenu = gtk.Menu()
volCopyPath = gtk.ImageMenuItem(_("Copy Volume Path")) volCopyPath = gtk.ImageMenuItem(_("Copy Volume Path"))
@ -173,49 +176,49 @@ class vmmHost(vmmGObjectUI):
self.volmenu.add(volCopyPath) self.volmenu.add(volCopyPath)
volListModel = gtk.ListStore(str, str, str, str, str) volListModel = gtk.ListStore(str, str, str, str, str)
self.window.get_widget("vol-list").set_model(volListModel) self.widget("vol-list").set_model(volListModel)
volCol = gtk.TreeViewColumn("Volumes") volCol = gtk.TreeViewColumn("Volumes")
vol_txt1 = gtk.CellRendererText() vol_txt1 = gtk.CellRendererText()
volCol.pack_start(vol_txt1, True) volCol.pack_start(vol_txt1, True)
volCol.add_attribute(vol_txt1, 'text', 1) volCol.add_attribute(vol_txt1, 'text', 1)
volCol.set_sort_column_id(1) volCol.set_sort_column_id(1)
self.window.get_widget("vol-list").append_column(volCol) self.widget("vol-list").append_column(volCol)
volSizeCol = gtk.TreeViewColumn("Size") volSizeCol = gtk.TreeViewColumn("Size")
vol_txt2 = gtk.CellRendererText() vol_txt2 = gtk.CellRendererText()
volSizeCol.pack_start(vol_txt2, False) volSizeCol.pack_start(vol_txt2, False)
volSizeCol.add_attribute(vol_txt2, 'text', 2) volSizeCol.add_attribute(vol_txt2, 'text', 2)
volSizeCol.set_sort_column_id(2) volSizeCol.set_sort_column_id(2)
self.window.get_widget("vol-list").append_column(volSizeCol) self.widget("vol-list").append_column(volSizeCol)
volFormatCol = gtk.TreeViewColumn("Format") volFormatCol = gtk.TreeViewColumn("Format")
vol_txt3 = gtk.CellRendererText() vol_txt3 = gtk.CellRendererText()
volFormatCol.pack_start(vol_txt3, False) volFormatCol.pack_start(vol_txt3, False)
volFormatCol.add_attribute(vol_txt3, 'text', 3) volFormatCol.add_attribute(vol_txt3, 'text', 3)
volFormatCol.set_sort_column_id(3) volFormatCol.set_sort_column_id(3)
self.window.get_widget("vol-list").append_column(volFormatCol) self.widget("vol-list").append_column(volFormatCol)
volUseCol = gtk.TreeViewColumn("Used By") volUseCol = gtk.TreeViewColumn("Used By")
vol_txt4 = gtk.CellRendererText() vol_txt4 = gtk.CellRendererText()
volUseCol.pack_start(vol_txt4, False) volUseCol.pack_start(vol_txt4, False)
volUseCol.add_attribute(vol_txt4, 'text', 4) volUseCol.add_attribute(vol_txt4, 'text', 4)
volUseCol.set_sort_column_id(4) volUseCol.set_sort_column_id(4)
self.window.get_widget("vol-list").append_column(volUseCol) self.widget("vol-list").append_column(volUseCol)
volListModel.set_sort_column_id(1, gtk.SORT_ASCENDING) volListModel.set_sort_column_id(1, gtk.SORT_ASCENDING)
init_pool_list(self.window.get_widget("pool-list"), init_pool_list(self.widget("pool-list"),
self.pool_selected) self.pool_selected)
populate_storage_pools(self.window.get_widget("pool-list"), populate_storage_pools(self.widget("pool-list"),
self.conn) self.conn)
def init_interface_state(self): def init_interface_state(self):
self.window.get_widget("interface-pages").set_show_tabs(False) self.widget("interface-pages").set_show_tabs(False)
# [ unique, label, icon name, icon size, is_active ] # [ unique, label, icon name, icon size, is_active ]
interfaceListModel = gtk.ListStore(str, str, str, int, bool) interfaceListModel = gtk.ListStore(str, str, str, int, bool)
self.window.get_widget("interface-list").set_model(interfaceListModel) self.widget("interface-list").set_model(interfaceListModel)
interfaceCol = gtk.TreeViewColumn("Interfaces") interfaceCol = gtk.TreeViewColumn("Interfaces")
interfaceCol.set_spacing(6) interfaceCol.set_spacing(6)
@ -227,16 +230,15 @@ class vmmHost(vmmGObjectUI):
interfaceCol.add_attribute(interface_txt, 'sensitive', 4) interfaceCol.add_attribute(interface_txt, 'sensitive', 4)
interfaceCol.add_attribute(interface_img, 'icon-name', 2) interfaceCol.add_attribute(interface_img, 'icon-name', 2)
interfaceCol.add_attribute(interface_img, 'stock-size', 3) interfaceCol.add_attribute(interface_img, 'stock-size', 3)
self.window.get_widget("interface-list").append_column(interfaceCol) self.widget("interface-list").append_column(interfaceCol)
interfaceListModel.set_sort_column_id(1, gtk.SORT_ASCENDING) interfaceListModel.set_sort_column_id(1, gtk.SORT_ASCENDING)
# Starmode combo # Starmode combo
uihelpers.build_startmode_combo( uihelpers.build_startmode_combo(self.widget("interface-startmode"))
self.window.get_widget("interface-startmode"))
# [ name, type ] # [ name, type ]
childListModel = gtk.ListStore(str, str) childListModel = gtk.ListStore(str, str)
childList = self.window.get_widget("interface-child-list") childList = self.widget("interface-child-list")
childList.set_model(childListModel) childList.set_model(childListModel)
childNameCol = gtk.TreeViewColumn("Name") childNameCol = gtk.TreeViewColumn("Name")
@ -265,22 +267,22 @@ class vmmHost(vmmGObjectUI):
arch = self.conn.host_architecture() arch = self.conn.host_architecture()
auto = self.conn.get_autoconnect() auto = self.conn.get_autoconnect()
self.window.get_widget("overview-uri").set_text(uri) self.widget("overview-uri").set_text(uri)
self.window.get_widget("overview-hostname").set_text(host) self.widget("overview-hostname").set_text(host)
self.window.get_widget("overview-hypervisor").set_text(drv) self.widget("overview-hypervisor").set_text(drv)
self.window.get_widget("overview-memory").set_text(memory) self.widget("overview-memory").set_text(memory)
self.window.get_widget("overview-cpus").set_text(str(proc)) self.widget("overview-cpus").set_text(str(proc))
self.window.get_widget("overview-arch").set_text(arch) self.widget("overview-arch").set_text(arch)
self.window.get_widget("config-autoconnect").set_active(auto) self.widget("config-autoconnect").set_active(auto)
self.cpu_usage_graph = Sparkline() self.cpu_usage_graph = Sparkline()
self.cpu_usage_graph.show() self.cpu_usage_graph.show()
self.window.get_widget("performance-table").attach(self.cpu_usage_graph, 1, 2, 0, 1) self.widget("performance-table").attach(self.cpu_usage_graph, 1, 2, 0, 1)
self.memory_usage_graph = Sparkline() self.memory_usage_graph = Sparkline()
self.memory_usage_graph.show() self.memory_usage_graph.show()
self.window.get_widget("performance-table").attach(self.memory_usage_graph, self.widget("performance-table").attach(self.memory_usage_graph,
1, 2, 1, 2) 1, 2, 1, 2)
def show(self): def show(self):
@ -356,7 +358,7 @@ class vmmHost(vmmGObjectUI):
# Update autostart value # Update autostart value
auto = self.conn.get_autoconnect() auto = self.conn.get_autoconnect()
self.window.get_widget("config-autoconnect").set_active(auto) self.widget("config-autoconnect").set_active(auto)
def refresh_resources(self, ignore=None): def refresh_resources(self, ignore=None):
vm_memory = self.conn.pretty_stats_memory() vm_memory = self.conn.pretty_stats_memory()
@ -367,9 +369,9 @@ class vmmHost(vmmGObjectUI):
cpu_vector.reverse() cpu_vector.reverse()
memory_vector.reverse() memory_vector.reverse()
self.window.get_widget("performance-cpu").set_text("%d %%" % self.widget("performance-cpu").set_text("%d %%" %
self.conn.host_cpu_time_percentage()) self.conn.host_cpu_time_percentage())
self.window.get_widget("performance-memory").set_text( self.widget("performance-memory").set_text(
_("%(currentmem)s of %(maxmem)s") % _("%(currentmem)s of %(maxmem)s") %
{'currentmem': vm_memory, 'maxmem': host_memory}) {'currentmem': vm_memory, 'maxmem': host_memory})
@ -378,9 +380,9 @@ class vmmHost(vmmGObjectUI):
def conn_state_changed(self, ignore1=None): def conn_state_changed(self, ignore1=None):
state = (self.conn.get_state() == vmmConnection.STATE_ACTIVE) state = (self.conn.get_state() == vmmConnection.STATE_ACTIVE)
self.window.get_widget("menu_file_restore_saved").set_sensitive(state) self.widget("menu_file_restore_saved").set_sensitive(state)
self.window.get_widget("net-add").set_sensitive(state) self.widget("net-add").set_sensitive(state)
self.window.get_widget("pool-add").set_sensitive(state) self.widget("pool-add").set_sensitive(state)
# Set error pages # Set error pages
if not state: if not state:
@ -458,22 +460,22 @@ class vmmHost(vmmGObjectUI):
logging.debug("Applying changes for network '%s'" % net.get_name()) logging.debug("Applying changes for network '%s'" % net.get_name())
try: try:
auto = self.window.get_widget("net-autostart").get_active() auto = self.widget("net-autostart").get_active()
net.set_autostart(auto) net.set_autostart(auto)
except Exception, e: except Exception, e:
self.err.show_err(_("Error setting net autostart: %s") % str(e)) self.err.show_err(_("Error setting net autostart: %s") % str(e))
return return
self.window.get_widget("net-apply").set_sensitive(False) self.widget("net-apply").set_sensitive(False)
def net_autostart_changed(self, src_ignore): def net_autostart_changed(self, src_ignore):
auto = self.window.get_widget("net-autostart").get_active() auto = self.widget("net-autostart").get_active()
self.window.get_widget("net-autostart").set_label(auto and self.widget("net-autostart").set_label(auto and
_("On Boot") or _("On Boot") or
_("Never")) _("Never"))
self.window.get_widget("net-apply").set_sensitive(True) self.widget("net-apply").set_sensitive(True)
def current_network(self): def current_network(self):
sel = self.window.get_widget("net-list").get_selection() sel = self.widget("net-list").get_selection()
active = sel.get_selected() active = sel.get_selected()
if active[1] != None: if active[1] != None:
curruuid = active[0].get_value(active[1], 0) curruuid = active[0].get_value(active[1], 0)
@ -481,7 +483,7 @@ class vmmHost(vmmGObjectUI):
return None return None
def refresh_network(self, src_ignore, uri_ignore, uuid): def refresh_network(self, src_ignore, uri_ignore, uuid):
uilist = self.window.get_widget("net-list") uilist = self.widget("net-list")
sel = uilist.get_selection() sel = uilist.get_selection()
active = sel.get_selected() active = sel.get_selected()
@ -496,8 +498,8 @@ class vmmHost(vmmGObjectUI):
def set_net_error_page(self, msg): def set_net_error_page(self, msg):
self.reset_net_state() self.reset_net_state()
self.window.get_widget("network-pages").set_current_page(1) self.widget("network-pages").set_current_page(1)
self.window.get_widget("network-error-label").set_text(msg) self.widget("network-error-label").set_text(msg)
def net_selected(self, src): def net_selected(self, src):
selected = src.get_selected() selected = src.get_selected()
@ -506,7 +508,7 @@ class vmmHost(vmmGObjectUI):
self.set_net_error_page(_("No virtual network selected.")) self.set_net_error_page(_("No virtual network selected."))
return return
self.window.get_widget("network-pages").set_current_page(0) self.widget("network-pages").set_current_page(0)
net = self.conn.get_net(selected[0].get_value(selected[1], 0)) net = self.conn.get_net(selected[0].get_value(selected[1], 0))
try: try:
@ -515,79 +517,80 @@ class vmmHost(vmmGObjectUI):
logging.exception(e) logging.exception(e)
self.set_net_error_page(_("Error selecting network: %s") % e) self.set_net_error_page(_("Error selecting network: %s") % e)
self.window.get_widget("net-apply").set_sensitive(False) self.widget("net-apply").set_sensitive(False)
def populate_net_state(self, net): def populate_net_state(self, net):
active = net.is_active() active = net.is_active()
self.window.get_widget("net-details").set_sensitive(True) self.widget("net-details").set_sensitive(True)
self.window.get_widget("net-name").set_text(net.get_name()) self.widget("net-name").set_text(net.get_name())
dev = active and net.get_bridge_device() or "" dev = active and net.get_bridge_device() or ""
state = active and _("Active") or _("Inactive") state = active and _("Active") or _("Inactive")
icon = (active and self.ICON_RUNNING or icon = (active and self.ICON_RUNNING or
self.ICON_SHUTOFF) self.ICON_SHUTOFF)
self.window.get_widget("net-device").set_text(dev) self.widget("net-device").set_text(dev)
self.window.get_widget("net-device").set_sensitive(active) self.widget("net-device").set_sensitive(active)
self.window.get_widget("net-state").set_text(state) self.widget("net-state").set_text(state)
self.window.get_widget("net-state-icon").set_from_icon_name( self.widget("net-state-icon").set_from_icon_name(icon,
icon, gtk.ICON_SIZE_MENU) gtk.ICON_SIZE_MENU)
self.window.get_widget("net-start").set_sensitive(not active) self.widget("net-start").set_sensitive(not active)
self.window.get_widget("net-stop").set_sensitive(active) self.widget("net-stop").set_sensitive(active)
self.window.get_widget("net-delete").set_sensitive(not active) self.widget("net-delete").set_sensitive(not active)
autostart = net.get_autostart() autostart = net.get_autostart()
autolabel = autostart and _("On Boot") or _("Never") autolabel = autostart and _("On Boot") or _("Never")
self.window.get_widget("net-autostart").set_active(autostart) self.widget("net-autostart").set_active(autostart)
self.window.get_widget("net-autostart").set_label(autolabel) self.widget("net-autostart").set_label(autolabel)
network = net.get_ipv4_network() network = net.get_ipv4_network()
self.window.get_widget("net-ip4-network").set_text(str(network)) self.widget("net-ip4-network").set_text(str(network))
dhcp = net.get_ipv4_dhcp_range() dhcp = net.get_ipv4_dhcp_range()
start = dhcp and str(dhcp[0]) or _("Disabled") start = dhcp and str(dhcp[0]) or _("Disabled")
end = dhcp and str(dhcp[1]) or _("Disabled") end = dhcp and str(dhcp[1]) or _("Disabled")
self.window.get_widget("net-ip4-dhcp-start").set_text(start) self.widget("net-ip4-dhcp-start").set_text(start)
self.window.get_widget("net-ip4-dhcp-end").set_text(end) self.widget("net-ip4-dhcp-end").set_text(end)
forward, ignore = net.get_ipv4_forward() forward, ignore = net.get_ipv4_forward()
iconsize = gtk.ICON_SIZE_MENU iconsize = gtk.ICON_SIZE_MENU
icon = forward and gtk.STOCK_CONNECT or gtk.STOCK_DISCONNECT icon = forward and gtk.STOCK_CONNECT or gtk.STOCK_DISCONNECT
self.window.get_widget("net-ip4-forwarding-icon").set_from_stock( self.widget("net-ip4-forwarding-icon").set_from_stock(icon, iconsize)
icon, iconsize)
forward_str = net.pretty_forward_mode() forward_str = net.pretty_forward_mode()
self.window.get_widget("net-ip4-forwarding").set_text(forward_str) self.widget("net-ip4-forwarding").set_text(forward_str)
def reset_net_state(self): def reset_net_state(self):
self.window.get_widget("net-details").set_sensitive(False) self.widget("net-details").set_sensitive(False)
self.window.get_widget("net-name").set_text("") self.widget("net-name").set_text("")
self.window.get_widget("net-device").set_text("") self.widget("net-device").set_text("")
self.window.get_widget("net-device").set_sensitive(False) self.widget("net-device").set_sensitive(False)
self.window.get_widget("net-state").set_text(_("Inactive")) self.widget("net-state").set_text(_("Inactive"))
self.window.get_widget("net-state-icon").set_from_icon_name( self.widget("net-state-icon").set_from_icon_name(self.ICON_SHUTOFF,
self.ICON_SHUTOFF, gtk.ICON_SIZE_MENU) gtk.ICON_SIZE_MENU)
self.window.get_widget("net-start").set_sensitive(False) self.widget("net-start").set_sensitive(False)
self.window.get_widget("net-stop").set_sensitive(False) self.widget("net-stop").set_sensitive(False)
self.window.get_widget("net-delete").set_sensitive(False) self.widget("net-delete").set_sensitive(False)
self.window.get_widget("net-autostart").set_label(_("Never")) self.widget("net-autostart").set_label(_("Never"))
self.window.get_widget("net-autostart").set_active(False) self.widget("net-autostart").set_active(False)
self.window.get_widget("net-ip4-network").set_text("") self.widget("net-ip4-network").set_text("")
self.window.get_widget("net-ip4-dhcp-start").set_text("") self.widget("net-ip4-dhcp-start").set_text("")
self.window.get_widget("net-ip4-dhcp-end").set_text("") self.widget("net-ip4-dhcp-end").set_text("")
self.window.get_widget("net-ip4-forwarding-icon").set_from_stock(gtk.STOCK_DISCONNECT, gtk.ICON_SIZE_MENU) self.widget("net-ip4-forwarding-icon").set_from_stock(
self.window.get_widget("net-ip4-forwarding").set_text(_("Isolated virtual network")) gtk.STOCK_DISCONNECT, gtk.ICON_SIZE_MENU)
self.window.get_widget("net-apply").set_sensitive(False) self.widget("net-ip4-forwarding").set_text(
_("Isolated virtual network"))
self.widget("net-apply").set_sensitive(False)
def repopulate_networks(self, src_ignore, uri_ignore, uuid_ignore): def repopulate_networks(self, src_ignore, uri_ignore, uuid_ignore):
self.populate_networks(self.window.get_widget("net-list").get_model()) self.populate_networks(self.widget("net-list").get_model())
def populate_networks(self, model): def populate_networks(self, model):
net_list = self.window.get_widget("net-list") net_list = self.widget("net-list")
model.clear() model.clear()
for uuid in self.conn.list_net_uuids(): for uuid in self.conn.list_net_uuids():
net = self.conn.get_net(uuid) net = self.conn.get_net(uuid)
@ -704,7 +707,7 @@ class vmmHost(vmmGObjectUI):
self.refresh_storage_pool(None, None, cp.get_uuid()) self.refresh_storage_pool(None, None, cp.get_uuid())
def current_pool(self): def current_pool(self):
sel = self.window.get_widget("pool-list").get_selection() sel = self.widget("pool-list").get_selection()
active = sel.get_selected() active = sel.get_selected()
if active[1] != None: if active[1] != None:
curruuid = active[0].get_value(active[1], 0) curruuid = active[0].get_value(active[1], 0)
@ -715,7 +718,7 @@ class vmmHost(vmmGObjectUI):
pool = self.current_pool() pool = self.current_pool()
if not pool: if not pool:
return None return None
sel = self.window.get_widget("vol-list").get_selection() sel = self.widget("vol-list").get_selection()
active = sel.get_selected() active = sel.get_selected()
if active[1] != None: if active[1] != None:
curruuid = active[0].get_value(active[1], 0) curruuid = active[0].get_value(active[1], 0)
@ -729,24 +732,24 @@ class vmmHost(vmmGObjectUI):
logging.debug("Applying changes for pool '%s'" % pool.get_name()) logging.debug("Applying changes for pool '%s'" % pool.get_name())
try: try:
do_auto = self.window.get_widget("pool-autostart").get_active() do_auto = self.widget("pool-autostart").get_active()
pool.set_autostart(do_auto) pool.set_autostart(do_auto)
except Exception, e: except Exception, e:
self.err.show_err(_("Error setting pool autostart: %s") % str(e)) self.err.show_err(_("Error setting pool autostart: %s") % str(e))
return return
self.window.get_widget("pool-apply").set_sensitive(False) self.widget("pool-apply").set_sensitive(False)
def pool_autostart_changed(self, src_ignore): def pool_autostart_changed(self, src_ignore):
auto = self.window.get_widget("pool-autostart").get_active() auto = self.widget("pool-autostart").get_active()
self.window.get_widget("pool-autostart").set_label(auto and self.widget("pool-autostart").set_label(auto and
_("On Boot") or _("On Boot") or
_("Never")) _("Never"))
self.window.get_widget("pool-apply").set_sensitive(True) self.widget("pool-apply").set_sensitive(True)
def set_storage_error_page(self, msg): def set_storage_error_page(self, msg):
self.reset_pool_state() self.reset_pool_state()
self.window.get_widget("storage-pages").set_current_page(1) self.widget("storage-pages").set_current_page(1)
self.window.get_widget("storage-error-label").set_text(msg) self.widget("storage-error-label").set_text(msg)
def pool_selected(self, src): def pool_selected(self, src):
selected = src.get_selected() selected = src.get_selected()
@ -755,7 +758,7 @@ class vmmHost(vmmGObjectUI):
self.set_storage_error_page(_("No storage pool selected.")) self.set_storage_error_page(_("No storage pool selected."))
return return
self.window.get_widget("storage-pages").set_current_page(0) self.widget("storage-pages").set_current_page(0)
uuid = selected[0].get_value(selected[1], 0) uuid = selected[0].get_value(selected[1], 0)
try: try:
@ -764,7 +767,7 @@ class vmmHost(vmmGObjectUI):
logging.exception(e) logging.exception(e)
self.set_storage_error_page(_("Error selecting pool: %s") % e) self.set_storage_error_page(_("Error selecting pool: %s") % e)
self.window.get_widget("pool-apply").set_sensitive(False) self.widget("pool-apply").set_sensitive(False)
def populate_pool_state(self, uuid): def populate_pool_state(self, uuid):
pool = self.conn.get_pool(uuid) pool = self.conn.get_pool(uuid)
@ -772,74 +775,73 @@ class vmmHost(vmmGObjectUI):
active = pool.is_active() active = pool.is_active()
# Set pool details state # Set pool details state
self.window.get_widget("pool-details").set_sensitive(True) self.widget("pool-details").set_sensitive(True)
self.window.get_widget("pool-name").set_markup("<b>%s:</b>" % self.widget("pool-name").set_markup("<b>%s:</b>" %
pool.get_name()) pool.get_name())
self.window.get_widget("pool-sizes").set_markup( self.widget("pool-sizes").set_markup(
"""<span size="large">%s Free</span> / <i>%s In Use</i>""" % """<span size="large">%s Free</span> / <i>%s In Use</i>""" %
(pool.get_pretty_available(), pool.get_pretty_allocation())) (pool.get_pretty_available(), pool.get_pretty_allocation()))
self.window.get_widget("pool-type").set_text( self.widget("pool-type").set_text(
Storage.StoragePool.get_pool_type_desc(pool.get_type())) Storage.StoragePool.get_pool_type_desc(pool.get_type()))
self.window.get_widget("pool-location").set_text( self.widget("pool-location").set_text(
pool.get_target_path()) pool.get_target_path())
self.window.get_widget("pool-state-icon").set_from_icon_name( self.widget("pool-state-icon").set_from_icon_name(
((active and self.ICON_RUNNING) or self.ICON_SHUTOFF), ((active and self.ICON_RUNNING) or self.ICON_SHUTOFF),
gtk.ICON_SIZE_MENU) gtk.ICON_SIZE_MENU)
self.window.get_widget("pool-state").set_text( self.widget("pool-state").set_text(
(active and _("Active")) or _("Inactive")) (active and _("Active")) or _("Inactive"))
self.window.get_widget("pool-autostart").set_label( self.widget("pool-autostart").set_label(
(auto and _("On Boot")) or _("Never")) (auto and _("On Boot")) or _("Never"))
self.window.get_widget("pool-autostart").set_active(auto) self.widget("pool-autostart").set_active(auto)
self.window.get_widget("vol-list").set_sensitive(active) self.widget("vol-list").set_sensitive(active)
self.populate_storage_volumes() self.populate_storage_volumes()
self.window.get_widget("pool-delete").set_sensitive(not active) self.widget("pool-delete").set_sensitive(not active)
self.window.get_widget("pool-stop").set_sensitive(active) self.widget("pool-stop").set_sensitive(active)
self.window.get_widget("pool-start").set_sensitive(not active) self.widget("pool-start").set_sensitive(not active)
self.window.get_widget("vol-add").set_sensitive(active) self.widget("vol-add").set_sensitive(active)
self.window.get_widget("vol-delete").set_sensitive(False) self.widget("vol-delete").set_sensitive(False)
def refresh_storage_pool(self, src_ignore, uri_ignore, uuid): def refresh_storage_pool(self, src_ignore, uri_ignore, uuid):
refresh_pool_in_list(self.window.get_widget("pool-list"), refresh_pool_in_list(self.widget("pool-list"), self.conn, uuid)
self.conn, uuid)
curpool = self.current_pool() curpool = self.current_pool()
if curpool.uuid != uuid: if curpool.uuid != uuid:
return return
# Currently selected pool changed state: force a 'pool_selected' to # Currently selected pool changed state: force a 'pool_selected' to
# update vol list # update vol list
self.pool_selected(self.window.get_widget("pool-list").get_selection()) self.pool_selected(self.widget("pool-list").get_selection())
def reset_pool_state(self): def reset_pool_state(self):
self.window.get_widget("pool-details").set_sensitive(False) self.widget("pool-details").set_sensitive(False)
self.window.get_widget("pool-name").set_text("") self.widget("pool-name").set_text("")
self.window.get_widget("pool-sizes").set_markup("""<span size="large"> </span>""") self.widget("pool-sizes").set_markup("""<span size="large"> </span>""")
self.window.get_widget("pool-type").set_text("") self.widget("pool-type").set_text("")
self.window.get_widget("pool-location").set_text("") self.widget("pool-location").set_text("")
self.window.get_widget("pool-state-icon").set_from_icon_name( self.widget("pool-state-icon").set_from_icon_name(self.ICON_SHUTOFF,
self.ICON_SHUTOFF, gtk.ICON_SIZE_MENU) gtk.ICON_SIZE_MENU)
self.window.get_widget("pool-state").set_text(_("Inactive")) self.widget("pool-state").set_text(_("Inactive"))
self.window.get_widget("vol-list").get_model().clear() self.widget("vol-list").get_model().clear()
self.window.get_widget("pool-autostart").set_label(_("Never")) self.widget("pool-autostart").set_label(_("Never"))
self.window.get_widget("pool-autostart").set_active(False) self.widget("pool-autostart").set_active(False)
self.window.get_widget("pool-delete").set_sensitive(False) self.widget("pool-delete").set_sensitive(False)
self.window.get_widget("pool-stop").set_sensitive(False) self.widget("pool-stop").set_sensitive(False)
self.window.get_widget("pool-start").set_sensitive(False) self.widget("pool-start").set_sensitive(False)
self.window.get_widget("pool-apply").set_sensitive(False) self.widget("pool-apply").set_sensitive(False)
self.window.get_widget("vol-add").set_sensitive(False) self.widget("vol-add").set_sensitive(False)
self.window.get_widget("vol-delete").set_sensitive(False) self.widget("vol-delete").set_sensitive(False)
self.window.get_widget("vol-list").set_sensitive(False) self.widget("vol-list").set_sensitive(False)
def vol_selected(self, src): def vol_selected(self, src):
selected = src.get_selected() selected = src.get_selected()
if selected[1] is None or \ if selected[1] is None or \
selected[0].get_value(selected[1], 0) is None: selected[0].get_value(selected[1], 0) is None:
self.window.get_widget("vol-delete").set_sensitive(False) self.widget("vol-delete").set_sensitive(False)
return return
self.window.get_widget("vol-delete").set_sensitive(True) self.widget("vol-delete").set_sensitive(True)
def popup_vol_menu(self, widget_ignore, event): def popup_vol_menu(self, widget_ignore, event):
if event.button != 3: if event.button != 3:
@ -858,12 +860,12 @@ class vmmHost(vmmGObjectUI):
def repopulate_storage_pools(self, src_ignore, uri_ignore, uuid_ignore): def repopulate_storage_pools(self, src_ignore, uri_ignore, uuid_ignore):
pool_list = self.window.get_widget("pool-list") pool_list = self.widget("pool-list")
populate_storage_pools(pool_list, self.conn) populate_storage_pools(pool_list, self.conn)
def populate_storage_volumes(self): def populate_storage_volumes(self):
pool = self.current_pool() pool = self.current_pool()
model = self.window.get_widget("vol-list").get_model() model = self.widget("vol-list").get_model()
model.clear() model.clear()
vols = pool.get_volumes() vols = pool.get_volumes()
for key in vols.keys(): for key in vols.keys():
@ -951,7 +953,7 @@ class vmmHost(vmmGObjectUI):
self.refresh_interface(None, None, cp.get_name()) self.refresh_interface(None, None, cp.get_name())
def current_interface(self): def current_interface(self):
sel = self.window.get_widget("interface-list").get_selection() sel = self.widget("interface-list").get_selection()
active = sel.get_selected() active = sel.get_selected()
if active[1] != None: if active[1] != None:
currname = active[0].get_value(active[1], 0) currname = active[0].get_value(active[1], 0)
@ -964,7 +966,7 @@ class vmmHost(vmmGObjectUI):
if interface is None: if interface is None:
return return
start_list = self.window.get_widget("interface-startmode") start_list = self.widget("interface-startmode")
model = start_list.get_model() model = start_list.get_model()
newmode = model[start_list.get_active()][0] newmode = model[start_list.get_active()][0]
@ -978,16 +980,15 @@ class vmmHost(vmmGObjectUI):
return return
# XXX: This will require an interface restart # XXX: This will require an interface restart
self.window.get_widget("interface-apply").set_sensitive(False) self.widget("interface-apply").set_sensitive(False)
def interface_startmode_changed(self, src_ignore): def interface_startmode_changed(self, src_ignore):
self.window.get_widget("interface-apply").set_sensitive(True) self.widget("interface-apply").set_sensitive(True)
def set_interface_error_page(self, msg): def set_interface_error_page(self, msg):
self.reset_interface_state() self.reset_interface_state()
self.window.get_widget("interface-pages").set_current_page( self.widget("interface-pages").set_current_page(INTERFACE_PAGE_ERROR)
INTERFACE_PAGE_ERROR) self.widget("interface-error-label").set_text(msg)
self.window.get_widget("interface-error-label").set_text(msg)
def interface_selected(self, src): def interface_selected(self, src):
selected = src.get_selected() selected = src.get_selected()
@ -996,8 +997,7 @@ class vmmHost(vmmGObjectUI):
self.set_interface_error_page(_("No interface selected.")) self.set_interface_error_page(_("No interface selected."))
return return
self.window.get_widget("interface-pages").set_current_page( self.widget("interface-pages").set_current_page(INTERFACE_PAGE_INFO)
INTERFACE_PAGE_INFO)
name = selected[0].get_value(selected[1], 0) name = selected[0].get_value(selected[1], 0)
try: try:
@ -1007,7 +1007,7 @@ class vmmHost(vmmGObjectUI):
self.set_interface_error_page(_("Error selecting interface: %s") % self.set_interface_error_page(_("Error selecting interface: %s") %
e) e)
self.window.get_widget("interface-apply").set_sensitive(False) self.widget("interface-apply").set_sensitive(False)
def populate_interface_state(self, name): def populate_interface_state(self, name):
interface = self.conn.get_interface(name) interface = self.conn.get_interface(name)
@ -1019,22 +1019,22 @@ class vmmHost(vmmGObjectUI):
ipv4 = interface.get_ipv4() ipv4 = interface.get_ipv4()
ipv6 = interface.get_ipv6() ipv6 = interface.get_ipv6()
self.window.get_widget("interface-details").set_sensitive(True) self.widget("interface-details").set_sensitive(True)
self.window.get_widget("interface-name").set_markup( self.widget("interface-name").set_markup(
"<b>%s %s:</b>" % (interface.get_pretty_type(), "<b>%s %s:</b>" % (interface.get_pretty_type(),
interface.get_name())) interface.get_name()))
self.window.get_widget("interface-mac").set_text(mac or _("Unknown")) self.widget("interface-mac").set_text(mac or _("Unknown"))
self.window.get_widget("interface-state-icon").set_from_icon_name( self.widget("interface-state-icon").set_from_icon_name(
((active and self.ICON_RUNNING) or self.ICON_SHUTOFF), ((active and self.ICON_RUNNING) or self.ICON_SHUTOFF),
gtk.ICON_SIZE_MENU) gtk.ICON_SIZE_MENU)
self.window.get_widget("interface-state").set_text( self.widget("interface-state").set_text(
(active and _("Active")) or _("Inactive")) (active and _("Active")) or _("Inactive"))
# Set start mode # Set start mode
start_list = self.window.get_widget("interface-startmode") start_list = self.widget("interface-startmode")
start_model = start_list.get_model() start_model = start_list.get_model()
start_label = self.window.get_widget("interface-startmode-label") start_label = self.widget("interface-startmode-label")
start_list.hide() start_list.hide()
start_label.show() start_label.show()
start_label.set_text(startmode) start_label.set_text(startmode)
@ -1049,19 +1049,19 @@ class vmmHost(vmmGObjectUI):
idx += 1 idx += 1
used_by = util.iface_in_use_by(self.conn, name) used_by = util.iface_in_use_by(self.conn, name)
self.window.get_widget("interface-inuseby").set_text(used_by or "-") self.widget("interface-inuseby").set_text(used_by or "-")
# IP info # IP info
self.window.get_widget("interface-ipv4-expander").set_property( self.widget("interface-ipv4-expander").set_property("visible",
"visible", bool(ipv4)) bool(ipv4))
self.window.get_widget("interface-ipv6-expander").set_property( self.widget("interface-ipv6-expander").set_property("visible",
"visible", bool(ipv6)) bool(ipv6))
if ipv4: if ipv4:
mode = ipv4[0] and "DHCP" or "Static" mode = ipv4[0] and "DHCP" or "Static"
addr = ipv4[1] or "-" addr = ipv4[1] or "-"
self.window.get_widget("interface-ipv4-mode").set_text(mode) self.widget("interface-ipv4-mode").set_text(mode)
self.window.get_widget("interface-ipv4-address").set_text(addr) self.widget("interface-ipv4-address").set_text(addr)
if ipv6: if ipv6:
mode = "" mode = ""
@ -1077,22 +1077,21 @@ class vmmHost(vmmGObjectUI):
if ipv6[2]: if ipv6[2]:
addrstr = reduce(lambda x, y: x + "\n" + y, ipv6[2]) addrstr = reduce(lambda x, y: x + "\n" + y, ipv6[2])
self.window.get_widget("interface-ipv6-mode").set_text(mode) self.widget("interface-ipv6-mode").set_text(mode)
self.window.get_widget("interface-ipv6-address").set_text(addrstr) self.widget("interface-ipv6-address").set_text(addrstr)
self.window.get_widget("interface-delete").set_sensitive(not active) self.widget("interface-delete").set_sensitive(not active)
self.window.get_widget("interface-stop").set_sensitive(active) self.widget("interface-stop").set_sensitive(active)
self.window.get_widget("interface-start").set_sensitive(not active) self.widget("interface-start").set_sensitive(not active)
show_child = (children or show_child = (children or
itype in [Interface.Interface.INTERFACE_TYPE_BRIDGE, itype in [Interface.Interface.INTERFACE_TYPE_BRIDGE,
Interface.Interface.INTERFACE_TYPE_BOND]) Interface.Interface.INTERFACE_TYPE_BOND])
self.window.get_widget("interface-child-box").set_property("visible", self.widget("interface-child-box").set_property("visible", show_child)
show_child)
self.populate_interface_children() self.populate_interface_children()
def refresh_interface(self, src_ignore, uri_ignore, name): def refresh_interface(self, src_ignore, uri_ignore, name):
iface_list = self.window.get_widget("interface-list") iface_list = self.widget("interface-list")
sel = iface_list.get_selection() sel = iface_list.get_selection()
active = sel.get_selected() active = sel.get_selected()
@ -1108,18 +1107,18 @@ class vmmHost(vmmGObjectUI):
def reset_interface_state(self): def reset_interface_state(self):
if not self.conn.interface_capable: if not self.conn.interface_capable:
self.window.get_widget("interface-add").set_sensitive(False) self.widget("interface-add").set_sensitive(False)
self.window.get_widget("interface-delete").set_sensitive(False) self.widget("interface-delete").set_sensitive(False)
self.window.get_widget("interface-stop").set_sensitive(False) self.widget("interface-stop").set_sensitive(False)
self.window.get_widget("interface-start").set_sensitive(False) self.widget("interface-start").set_sensitive(False)
self.window.get_widget("interface-apply").set_sensitive(False) self.widget("interface-apply").set_sensitive(False)
def repopulate_interfaces(self, src_ignore, uri_ignore, name_ignore): def repopulate_interfaces(self, src_ignore, uri_ignore, name_ignore):
interface_list = self.window.get_widget("interface-list") interface_list = self.widget("interface-list")
self.populate_interfaces(interface_list.get_model()) self.populate_interfaces(interface_list.get_model())
def populate_interfaces(self, model): def populate_interfaces(self, model):
iface_list = self.window.get_widget("interface-list") iface_list = self.widget("interface-list")
model.clear() model.clear()
for name in self.conn.list_interface_names(): for name in self.conn.list_interface_names():
iface = self.conn.get_interface(name) iface = self.conn.get_interface(name)
@ -1134,7 +1133,7 @@ class vmmHost(vmmGObjectUI):
def populate_interface_children(self): def populate_interface_children(self):
interface = self.current_interface() interface = self.current_interface()
child_list = self.window.get_widget("interface-child-list") child_list = self.widget("interface-child-list")
model = child_list.get_model() model = child_list.get_model()
model.clear() model.clear()

View File

@ -137,11 +137,11 @@ class vmmManager(vmmGObjectUI):
self.init_context_menus() self.init_context_menus()
# XXX: Help docs useless/out of date # XXX: Help docs useless/out of date
self.window.get_widget("menu_help").hide() self.widget("menu_help").hide()
self.vm_selected() self.vm_selected()
self.window.get_widget("vm-list").get_selection().connect("changed", self.widget("vm-list").get_selection().connect("changed",
self.vm_selected) self.vm_selected)
# Initialize stat polling columns based on global polling # Initialize stat polling columns based on global polling
# preferences (we want signal handlers for this) # preferences (we want signal handlers for this)
@ -154,7 +154,7 @@ class vmmManager(vmmGObjectUI):
self.engine.connect("connection-removed", self._remove_connection) self.engine.connect("connection-removed", self._remove_connection)
# Select first list entry # Select first list entry
vmlist = self.window.get_widget("vm-list") vmlist = self.widget("vm-list")
if len(vmlist.get_model()) != 0: if len(vmlist.get_model()) != 0:
vmlist.get_selection().select_iter( vmlist.get_selection().select_iter(
vmlist.get_model().get_iter_first()) vmlist.get_model().get_iter_first())
@ -225,8 +225,8 @@ class vmmManager(vmmGObjectUI):
return bool(self.topwin.flags() & gtk.VISIBLE) return bool(self.topwin.flags() & gtk.VISIBLE)
def set_startup_error(self, msg): def set_startup_error(self, msg):
self.window.get_widget("vm-notebook").set_current_page(1) self.widget("vm-notebook").set_current_page(1)
self.window.get_widget("startup-error-label").set_text(msg) self.widget("startup-error-label").set_text(msg)
################ ################
# Init methods # # Init methods #
@ -256,26 +256,25 @@ class vmmManager(vmmGObjectUI):
COL_NETWORK)) COL_NETWORK))
self.window.get_widget("menu_view_stats_guest_cpu").set_active( self.widget("menu_view_stats_guest_cpu").set_active(
self.config.is_vmlist_guest_cpu_usage_visible()) self.config.is_vmlist_guest_cpu_usage_visible())
self.window.get_widget("menu_view_stats_host_cpu").set_active( self.widget("menu_view_stats_host_cpu").set_active(
self.config.is_vmlist_host_cpu_usage_visible()) self.config.is_vmlist_host_cpu_usage_visible())
self.window.get_widget("menu_view_stats_disk").set_active( self.widget("menu_view_stats_disk").set_active(
self.config.is_vmlist_disk_io_visible()) self.config.is_vmlist_disk_io_visible())
self.window.get_widget("menu_view_stats_network").set_active( self.widget("menu_view_stats_network").set_active(
self.config.is_vmlist_network_traffic_visible()) self.config.is_vmlist_network_traffic_visible())
def init_toolbar(self): def init_toolbar(self):
self.window.get_widget("vm-new").set_icon_name("vm_new") self.widget("vm-new").set_icon_name("vm_new")
self.window.get_widget("vm-open").set_icon_name("icon_console") self.widget("vm-open").set_icon_name("icon_console")
uihelpers.build_shutdown_button_menu( uihelpers.build_shutdown_button_menu(self.widget("vm-shutdown"),
self.window.get_widget("vm-shutdown"), self.poweroff_vm,
self.poweroff_vm, self.reboot_vm,
self.reboot_vm, self.destroy_vm,
self.destroy_vm, self.save_vm)
self.save_vm)
tool = self.window.get_widget("vm-toolbar") tool = self.widget("vm-toolbar")
util.safe_set_prop(tool, "icon-size", gtk.ICON_SIZE_LARGE_TOOLBAR) util.safe_set_prop(tool, "icon-size", gtk.ICON_SIZE_LARGE_TOOLBAR)
for c in tool.get_children(): for c in tool.get_children():
c.set_homogeneous(False) c.set_homogeneous(False)
@ -358,8 +357,8 @@ class vmmManager(vmmGObjectUI):
self.connmenu.show() self.connmenu.show()
def init_vmlist(self): def init_vmlist(self):
vmlist = self.window.get_widget("vm-list") vmlist = self.widget("vm-list")
self.window.get_widget("vm-notebook").set_show_tabs(False) self.widget("vm-notebook").set_show_tabs(False)
# Handle, name, markup, status, status icon name, key/uuid, hint, # Handle, name, markup, status, status icon name, key/uuid, hint,
# is conn, is conn connected, is vm, is vm running, fg color # is conn, is conn connected, is vm, is vm running, fg color
@ -438,7 +437,7 @@ class vmmManager(vmmGObjectUI):
################## ##################
def current_row(self): def current_row(self):
vmlist = self.window.get_widget("vm-list") vmlist = self.widget("vm-list")
selection = vmlist.get_selection() selection = vmlist.get_selection()
active = selection.get_selected() active = selection.get_selected()
@ -472,7 +471,7 @@ class vmmManager(vmmGObjectUI):
return vm.get_uuid() return vm.get_uuid()
def current_connection_uri(self, default_selection=False): def current_connection_uri(self, default_selection=False):
vmlist = self.window.get_widget("vm-list") vmlist = self.widget("vm-list")
model = vmlist.get_model() model = vmlist.get_model()
conn = self.current_connection() conn = self.current_connection()
@ -564,7 +563,7 @@ class vmmManager(vmmGObjectUI):
self.delete_dialog.show(vm, self.topwin) self.delete_dialog.show(vm, self.topwin)
def set_pause_state(self, state): def set_pause_state(self, state):
src = self.window.get_widget("vm-pause") src = self.widget("vm-pause")
try: try:
self.ignore_pause = True self.ignore_pause = True
src.set_active(state) src.set_active(state)
@ -678,13 +677,13 @@ class vmmManager(vmmGObjectUI):
vm.connect("resources-sampled", self.vm_resources_sampled) vm.connect("resources-sampled", self.vm_resources_sampled)
vm.connect("config-changed", self.vm_resources_sampled) vm.connect("config-changed", self.vm_resources_sampled)
vmlist = self.window.get_widget("vm-list") vmlist = self.widget("vm-list")
model = vmlist.get_model() model = vmlist.get_model()
self._append_vm(model, vm, connection) self._append_vm(model, vm, connection)
def vm_removed(self, connection, uri_ignore, vmuuid): def vm_removed(self, connection, uri_ignore, vmuuid):
vmlist = self.window.get_widget("vm-list") vmlist = self.widget("vm-list")
model = vmlist.get_model() model = vmlist.get_model()
parent = self.rows[connection.get_uri()].iter parent = self.rows[connection.get_uri()].iter
@ -758,8 +757,7 @@ class vmmManager(vmmGObjectUI):
self.rows[row_key] = model[path] self.rows[row_key] = model[path]
# Expand a connection when adding a vm to it # Expand a connection when adding a vm to it
self.window.get_widget("vm-list").expand_row(model.get_path(parent), self.widget("vm-list").expand_row(model.get_path(parent), False)
False)
def _append_connection(self, model, conn): def _append_connection(self, model, conn):
row = [] row = []
@ -785,7 +783,7 @@ class vmmManager(vmmGObjectUI):
def _add_connection(self, engine_ignore, conn): def _add_connection(self, engine_ignore, conn):
# Make sure error page isn't showing # Make sure error page isn't showing
self.window.get_widget("vm-notebook").set_current_page(0) self.widget("vm-notebook").set_current_page(0)
if conn.get_uri() in self.rows: if conn.get_uri() in self.rows:
return return
@ -797,7 +795,7 @@ class vmmManager(vmmGObjectUI):
conn.connect("connect-error", self._connect_error) conn.connect("connect-error", self._connect_error)
# add the connection to the treeModel # add the connection to the treeModel
vmlist = self.window.get_widget("vm-list") vmlist = self.widget("vm-list")
row = self._append_connection(vmlist.get_model(), conn) row = self._append_connection(vmlist.get_model(), conn)
vmlist.get_selection().select_iter(row) vmlist.get_selection().select_iter(row)
@ -820,7 +818,7 @@ class vmmManager(vmmGObjectUI):
self.conn_refresh_resources(conn, newname) self.conn_refresh_resources(conn, newname)
def _remove_connection(self, engine_ignore, uri): def _remove_connection(self, engine_ignore, uri):
model = self.window.get_widget("vm-list").get_model() model = self.widget("vm-list").get_model()
parent = self.rows[uri].iter parent = self.rows[uri].iter
if parent is None: if parent is None:
@ -844,7 +842,7 @@ class vmmManager(vmmGObjectUI):
ignore = newstatus ignore = newstatus
ignore = oldstatus ignore = oldstatus
parent = self.rows[vm.get_connection().get_uri()].iter parent = self.rows[vm.get_connection().get_uri()].iter
vmlist = self.window.get_widget("vm-list") vmlist = self.widget("vm-list")
model = vmlist.get_model() model = vmlist.get_model()
missing = True missing = True
@ -862,7 +860,7 @@ class vmmManager(vmmGObjectUI):
self.vm_resources_sampled(vm) self.vm_resources_sampled(vm)
def vm_resources_sampled(self, vm): def vm_resources_sampled(self, vm):
vmlist = self.window.get_widget("vm-list") vmlist = self.widget("vm-list")
model = vmlist.get_model() model = vmlist.get_model()
if self.vm_row_key(vm) not in self.rows: if self.vm_row_key(vm) not in self.rows:
@ -882,7 +880,7 @@ class vmmManager(vmmGObjectUI):
self.vm_selected() self.vm_selected()
def conn_refresh_resources(self, conn, newname=None): def conn_refresh_resources(self, conn, newname=None):
vmlist = self.window.get_widget("vm-list") vmlist = self.widget("vm-list")
model = vmlist.get_model() model = vmlist.get_model()
row = self.rows[conn.get_uri()] row = self.rows[conn.get_uri()]
@ -915,7 +913,7 @@ class vmmManager(vmmGObjectUI):
strip_text = text.replace("_", "") strip_text = text.replace("_", "")
self.vmmenu_items["run"].get_child().set_label(text) self.vmmenu_items["run"].get_child().set_label(text)
self.window.get_widget("vm-run").set_label(strip_text) self.widget("vm-run").set_label(strip_text)
def vm_selected(self, ignore=None): def vm_selected(self, ignore=None):
conn = self.current_connection() conn = self.current_connection()
@ -938,21 +936,21 @@ class vmmManager(vmmGObjectUI):
if vm and vm.managedsave_supported: if vm and vm.managedsave_supported:
self.change_run_text(vm.hasSavedImage()) self.change_run_text(vm.hasSavedImage())
self.window.get_widget("vm-open").set_sensitive(show_open) self.widget("vm-open").set_sensitive(show_open)
self.window.get_widget("vm-run").set_sensitive(show_run) self.widget("vm-run").set_sensitive(show_run)
self.window.get_widget("vm-shutdown").set_sensitive(show_shutdown) self.widget("vm-shutdown").set_sensitive(show_shutdown)
self.set_pause_state(is_paused) self.set_pause_state(is_paused)
self.window.get_widget("vm-pause").set_sensitive(show_pause) self.widget("vm-pause").set_sensitive(show_pause)
self.window.get_widget("menu_edit_details").set_sensitive(show_details) self.widget("menu_edit_details").set_sensitive(show_details)
self.window.get_widget("menu_host_details").set_sensitive(host_details) self.widget("menu_host_details").set_sensitive(host_details)
self.window.get_widget("menu_edit_delete").set_sensitive(delete) self.widget("menu_edit_delete").set_sensitive(delete)
def popup_vm_menu_key(self, widget_ignore, event): def popup_vm_menu_key(self, widget_ignore, event):
if gtk.gdk.keyval_name(event.keyval) != "Menu": if gtk.gdk.keyval_name(event.keyval) != "Menu":
return False return False
vmlist = self.window.get_widget("vm-list") vmlist = self.widget("vm-list")
treeselection = vmlist.get_selection() treeselection = vmlist.get_selection()
model, _iter = treeselection.get_selected() model, _iter = treeselection.get_selected()
self.popup_vm_menu(model, _iter, event) self.popup_vm_menu(model, _iter, event)
@ -1052,7 +1050,7 @@ class vmmManager(vmmGObjectUI):
widgn = "menu_view_stats_disk" widgn = "menu_view_stats_disk"
elif userdata == COL_NETWORK: elif userdata == COL_NETWORK:
widgn = "menu_view_stats_network" widgn = "menu_view_stats_network"
widget = self.window.get_widget(widgn) widget = self.widget(widgn)
tool_text = "" tool_text = ""
@ -1078,22 +1076,22 @@ class vmmManager(vmmGObjectUI):
def toggle_network_traffic_visible_widget(self, *ignore): def toggle_network_traffic_visible_widget(self, *ignore):
val = self.config.is_vmlist_network_traffic_visible() val = self.config.is_vmlist_network_traffic_visible()
self.netcol.set_visible(val) self.netcol.set_visible(val)
self.window.get_widget("menu_view_stats_network").set_active(val) self.widget("menu_view_stats_network").set_active(val)
def toggle_disk_io_visible_widget(self, *ignore): def toggle_disk_io_visible_widget(self, *ignore):
val = self.config.is_vmlist_disk_io_visible() val = self.config.is_vmlist_disk_io_visible()
self.diskcol.set_visible(val) self.diskcol.set_visible(val)
self.window.get_widget("menu_view_stats_disk").set_active(val) self.widget("menu_view_stats_disk").set_active(val)
def toggle_guest_cpu_usage_visible_widget(self, *ignore): def toggle_guest_cpu_usage_visible_widget(self, *ignore):
val = self.config.is_vmlist_guest_cpu_usage_visible() val = self.config.is_vmlist_guest_cpu_usage_visible()
self.guestcpucol.set_visible(val) self.guestcpucol.set_visible(val)
self.window.get_widget("menu_view_stats_guest_cpu").set_active(val) self.widget("menu_view_stats_guest_cpu").set_active(val)
def toggle_host_cpu_usage_visible_widget(self, *ignore): def toggle_host_cpu_usage_visible_widget(self, *ignore):
val = self.config.is_vmlist_host_cpu_usage_visible() val = self.config.is_vmlist_host_cpu_usage_visible()
self.hostcpucol.set_visible(val) self.hostcpucol.set_visible(val)
self.window.get_widget("menu_view_stats_host_cpu").set_active(val) self.widget("menu_view_stats_host_cpu").set_active(val)
def toggle_stats_visible(self, src, stats_id): def toggle_stats_visible(self, src, stats_id):
visible = src.get_active() visible = src.get_active()

View File

@ -70,12 +70,12 @@ class vmmMigrateDialog(vmmGObjectUI):
self.bind_escape_key_close() self.bind_escape_key_close()
blue = gtk.gdk.color_parse("#0072A8") blue = gtk.gdk.color_parse("#0072A8")
self.window.get_widget("migrate-header").modify_bg(gtk.STATE_NORMAL, self.widget("migrate-header").modify_bg(gtk.STATE_NORMAL,
blue) blue)
image = gtk.image_new_from_icon_name("vm_clone_wizard", image = gtk.image_new_from_icon_name("vm_clone_wizard",
gtk.ICON_SIZE_DIALOG) gtk.ICON_SIZE_DIALOG)
image.show() image.show()
self.window.get_widget("migrate-vm-icon-box").pack_end(image, False) self.widget("migrate-vm-icon-box").pack_end(image, False)
self.init_state() self.init_state()
@ -97,14 +97,14 @@ class vmmMigrateDialog(vmmGObjectUI):
self.destconn_rows = None self.destconn_rows = None
# Not sure why we need to do this manually, but it matters # Not sure why we need to do this manually, but it matters
self.window.get_widget("migrate-dest").get_model().clear() self.widget("migrate-dest").get_model().clear()
vmmGObjectUI.cleanup(self) vmmGObjectUI.cleanup(self)
def init_state(self): def init_state(self):
# [hostname, conn, can_migrate, tooltip] # [hostname, conn, can_migrate, tooltip]
dest_model = gtk.ListStore(str, object, bool, str) dest_model = gtk.ListStore(str, object, bool, str)
dest_combo = self.window.get_widget("migrate-dest") dest_combo = self.widget("migrate-dest")
dest_combo.set_model(dest_model) dest_combo.set_model(dest_model)
text = gtk.CellRendererText() text = gtk.CellRendererText()
dest_combo.pack_start(text, True) dest_combo.pack_start(text, True)
@ -121,31 +121,31 @@ class vmmMigrateDialog(vmmGObjectUI):
def reset_state(self): def reset_state(self):
title_str = ("<span size='large' color='white'>%s '%s'</span>" % title_str = ("<span size='large' color='white'>%s '%s'</span>" %
(_("Migrate"), self.vm.get_name())) (_("Migrate"), self.vm.get_name()))
self.window.get_widget("migrate-main-label").set_markup(title_str) self.widget("migrate-main-label").set_markup(title_str)
self.window.get_widget("migrate-cancel").grab_focus() self.widget("migrate-cancel").grab_focus()
name = self.vm.get_name() name = self.vm.get_name()
srchost = self.conn.get_hostname() srchost = self.conn.get_hostname()
self.window.get_widget("migrate-label-name").set_text(name) self.widget("migrate-label-name").set_text(name)
self.window.get_widget("migrate-label-src").set_text(srchost) self.widget("migrate-label-src").set_text(srchost)
self.window.get_widget("migrate-advanced-expander").set_expanded(False) self.widget("migrate-advanced-expander").set_expanded(False)
self.window.get_widget("migrate-set-interface").set_active(False) self.widget("migrate-set-interface").set_active(False)
self.window.get_widget("migrate-set-rate").set_active(False) self.widget("migrate-set-rate").set_active(False)
self.window.get_widget("migrate-set-port").set_active(False) self.widget("migrate-set-port").set_active(False)
self.window.get_widget("migrate-set-maxdowntime").set_active(False) self.widget("migrate-set-maxdowntime").set_active(False)
self.window.get_widget("migrate-max-downtime").set_value(30) self.widget("migrate-max-downtime").set_value(30)
running = self.vm.is_active() running = self.vm.is_active()
self.window.get_widget("migrate-offline").set_active(not running) self.widget("migrate-offline").set_active(not running)
self.window.get_widget("migrate-offline").set_sensitive(running) self.widget("migrate-offline").set_sensitive(running)
self.window.get_widget("migrate-rate").set_value(0) self.widget("migrate-rate").set_value(0)
self.window.get_widget("migrate-secure").set_active(False) self.widget("migrate-secure").set_active(False)
downtime_box = self.window.get_widget("migrate-maxdowntime-box") downtime_box = self.widget("migrate-maxdowntime-box")
support_downtime = self.vm.support_downtime() support_downtime = self.vm.support_downtime()
downtime_tooltip = "" downtime_tooltip = ""
if not support_downtime: if not support_downtime:
@ -156,12 +156,12 @@ class vmmMigrateDialog(vmmGObjectUI):
if self.conn.is_xen(): if self.conn.is_xen():
# Default xen port is 8002 # Default xen port is 8002
self.window.get_widget("migrate-port").set_value(8002) self.widget("migrate-port").set_value(8002)
else: else:
# QEMU migrate port range is 49152+64 # QEMU migrate port range is 49152+64
self.window.get_widget("migrate-port").set_value(49152) self.widget("migrate-port").set_value(49152)
secure_box = self.window.get_widget("migrate-secure-box") secure_box = self.widget("migrate-secure-box")
support_secure = hasattr(libvirt, "VIR_MIGRATE_TUNNELLED") support_secure = hasattr(libvirt, "VIR_MIGRATE_TUNNELLED")
secure_tooltip = "" secure_tooltip = ""
if not support_secure: if not support_secure:
@ -184,31 +184,30 @@ class vmmMigrateDialog(vmmGObjectUI):
if active == -1: if active == -1:
tooltip = _("A valid destination connection must be selected.") tooltip = _("A valid destination connection must be selected.")
self.window.get_widget("migrate-finish").set_sensitive(active != -1) self.widget("migrate-finish").set_sensitive(active != -1)
util.tooltip_wrapper(self.window.get_widget("migrate-finish"), tooltip) util.tooltip_wrapper(self.widget("migrate-finish"), tooltip)
def toggle_set_rate(self, src): def toggle_set_rate(self, src):
enable = src.get_active() enable = src.get_active()
self.window.get_widget("migrate-rate").set_sensitive(enable) self.widget("migrate-rate").set_sensitive(enable)
def toggle_set_interface(self, src): def toggle_set_interface(self, src):
enable = src.get_active() enable = src.get_active()
port_enable = self.window.get_widget("migrate-set-port").get_active() port_enable = self.widget("migrate-set-port").get_active()
self.window.get_widget("migrate-interface").set_sensitive(enable) self.widget("migrate-interface").set_sensitive(enable)
self.window.get_widget("migrate-set-port").set_sensitive(enable) self.widget("migrate-set-port").set_sensitive(enable)
self.window.get_widget("migrate-port").set_sensitive(enable and self.widget("migrate-port").set_sensitive(enable and port_enable)
port_enable)
def toggle_set_maxdowntime(self, src): def toggle_set_maxdowntime(self, src):
enable = src.get_active() enable = src.get_active()
self.window.get_widget("migrate-max-downtime").set_sensitive(enable) self.widget("migrate-max-downtime").set_sensitive(enable)
def toggle_set_port(self, src): def toggle_set_port(self, src):
enable = src.get_active() enable = src.get_active()
self.window.get_widget("migrate-port").set_sensitive(enable) self.widget("migrate-port").set_sensitive(enable)
def get_config_destconn(self): def get_config_destconn(self):
combo = self.window.get_widget("migrate-dest") combo = self.widget("migrate-dest")
model = combo.get_model() model = combo.get_model()
idx = combo.get_active() idx = combo.get_active()
@ -222,39 +221,39 @@ class vmmMigrateDialog(vmmGObjectUI):
return row[1] return row[1]
def get_config_offline(self): def get_config_offline(self):
return self.window.get_widget("migrate-offline").get_active() return self.widget("migrate-offline").get_active()
def get_config_max_downtime(self): def get_config_max_downtime(self):
if not self.get_config_max_downtime_enabled(): if not self.get_config_max_downtime_enabled():
return 0 return 0
return int(self.window.get_widget("migrate-max-downtime").get_value()) return int(self.widget("migrate-max-downtime").get_value())
def get_config_secure(self): def get_config_secure(self):
return self.window.get_widget("migrate-secure").get_active() return self.widget("migrate-secure").get_active()
def get_config_max_downtime_enabled(self): def get_config_max_downtime_enabled(self):
return self.window.get_widget("migrate-max-downtime").get_property("sensitive") return self.widget("migrate-max-downtime").get_property("sensitive")
def get_config_rate_enabled(self): def get_config_rate_enabled(self):
return self.window.get_widget("migrate-rate").get_property("sensitive") return self.widget("migrate-rate").get_property("sensitive")
def get_config_rate(self): def get_config_rate(self):
if not self.get_config_rate_enabled(): if not self.get_config_rate_enabled():
return 0 return 0
return int(self.window.get_widget("migrate-rate").get_value()) return int(self.widget("migrate-rate").get_value())
def get_config_interface_enabled(self): def get_config_interface_enabled(self):
return self.window.get_widget("migrate-interface").get_property("sensitive") return self.widget("migrate-interface").get_property("sensitive")
def get_config_interface(self): def get_config_interface(self):
if not self.get_config_interface_enabled(): if not self.get_config_interface_enabled():
return None return None
return self.window.get_widget("migrate-interface").get_text() return self.widget("migrate-interface").get_text()
def get_config_port_enabled(self): def get_config_port_enabled(self):
return self.window.get_widget("migrate-port").get_property("sensitive") return self.widget("migrate-port").get_property("sensitive")
def get_config_port(self): def get_config_port(self):
if not self.get_config_port_enabled(): if not self.get_config_port_enabled():
return 0 return 0
return int(self.window.get_widget("migrate-port").get_value()) return int(self.widget("migrate-port").get_value())
def build_localhost_uri(self, destconn): def build_localhost_uri(self, destconn):
desthost = destconn.get_qualified_hostname() desthost = destconn.get_qualified_hostname()
@ -313,7 +312,7 @@ class vmmMigrateDialog(vmmGObjectUI):
self.populate_dest_combo() self.populate_dest_combo()
def populate_dest_combo(self): def populate_dest_combo(self):
combo = self.window.get_widget("migrate-dest") combo = self.widget("migrate-dest")
model = combo.get_model() model = combo.get_model()
idx = combo.get_active() idx = combo.get_active()
idxconn = None idxconn = None
@ -349,7 +348,7 @@ class vmmMigrateDialog(vmmGObjectUI):
combo.set_active(idx) combo.set_active(idx)
def dest_add_connection(self, engine_ignore, conn): def dest_add_connection(self, engine_ignore, conn):
combo = self.window.get_widget("migrate-dest") combo = self.widget("migrate-dest")
model = combo.get_model() model = combo.get_model()
newrow = self.build_dest_row(conn) newrow = self.build_dest_row(conn)

View File

@ -88,7 +88,7 @@ class vmmPreferences(vmmGObjectUI):
self.bind_escape_key_close() self.bind_escape_key_close()
# XXX: Help docs useless/out of date # XXX: Help docs useless/out of date
self.window.get_widget("prefs-help").hide() self.widget("prefs-help").hide()
def close(self, ignore1=None, ignore2=None): def close(self, ignore1=None, ignore2=None):
self.topwin.hide() self.topwin.hide()
@ -105,39 +105,39 @@ class vmmPreferences(vmmGObjectUI):
def refresh_view_system_tray(self, ignore1=None, ignore2=None, def refresh_view_system_tray(self, ignore1=None, ignore2=None,
ignore3=None, ignore4=None): ignore3=None, ignore4=None):
val = self.config.get_view_system_tray() val = self.config.get_view_system_tray()
self.window.get_widget("prefs-system-tray").set_active(bool(val)) self.widget("prefs-system-tray").set_active(bool(val))
def refresh_update_interval(self, ignore1=None, ignore2=None, def refresh_update_interval(self, ignore1=None, ignore2=None,
ignore3=None, ignore4=None): ignore3=None, ignore4=None):
self.window.get_widget("prefs-stats-update-interval").set_value( self.widget("prefs-stats-update-interval").set_value(
self.config.get_stats_update_interval()) self.config.get_stats_update_interval())
def refresh_history_length(self, ignore1=None, ignore2=None, def refresh_history_length(self, ignore1=None, ignore2=None,
ignore3=None, ignore4=None): ignore3=None, ignore4=None):
self.window.get_widget("prefs-stats-history-len").set_value( self.widget("prefs-stats-history-len").set_value(
self.config.get_stats_history_length()) self.config.get_stats_history_length())
def refresh_console_accels(self, ignore1=None, ignore2=None, def refresh_console_accels(self, ignore1=None, ignore2=None,
ignore3=None, ignore4=None): ignore3=None, ignore4=None):
self.window.get_widget("prefs-console-accels").set_active( self.widget("prefs-console-accels").set_active(
self.config.get_console_accels()) self.config.get_console_accels())
def refresh_console_scaling(self, ignore1=None, ignore2=None, def refresh_console_scaling(self, ignore1=None, ignore2=None,
ignore3=None, ignore4=None): ignore3=None, ignore4=None):
val = self.config.get_console_scaling() val = self.config.get_console_scaling()
if val == None: if val == None:
val = 0 val = 0
self.window.get_widget("prefs-console-scaling").set_active(val) self.widget("prefs-console-scaling").set_active(val)
def refresh_sound_local(self, ignore1=None, ignore2=None, ignore=None, def refresh_sound_local(self, ignore1=None, ignore2=None, ignore=None,
ignore4=None): ignore4=None):
self.window.get_widget("prefs-sound-local").set_active( self.widget("prefs-sound-local").set_active(
self.config.get_local_sound()) self.config.get_local_sound())
def refresh_sound_remote(self, ignore1=None, ignore2=None, ignore=None, def refresh_sound_remote(self, ignore1=None, ignore2=None, ignore=None,
ignore4=None): ignore4=None):
self.window.get_widget("prefs-sound-remote").set_active( self.widget("prefs-sound-remote").set_active(
self.config.get_remote_sound()) self.config.get_remote_sound())
def refresh_graphics_type(self, ignore1=None, ignore2=None, ignore=None, def refresh_graphics_type(self, ignore1=None, ignore2=None, ignore=None,
ignore4=None): ignore4=None):
combo = self.window.get_widget("prefs-graphics-type") combo = self.widget("prefs-graphics-type")
model = combo.get_model() model = combo.get_model()
gtype = self.config.get_graphics_type() gtype = self.config.get_graphics_type()
@ -148,15 +148,15 @@ class vmmPreferences(vmmGObjectUI):
active = rowidx active = rowidx
break break
self.window.get_widget("prefs-graphics-type").set_active(active) self.widget("prefs-graphics-type").set_active(active)
def refresh_disk_poll(self, ignore1=None, ignore2=None, ignore3=None, def refresh_disk_poll(self, ignore1=None, ignore2=None, ignore3=None,
ignore4=None): ignore4=None):
self.window.get_widget("prefs-stats-enable-disk").set_active( self.widget("prefs-stats-enable-disk").set_active(
self.config.get_stats_enable_disk_poll()) self.config.get_stats_enable_disk_poll())
def refresh_net_poll(self, ignore1=None, ignore2=None, ignore3=None, def refresh_net_poll(self, ignore1=None, ignore2=None, ignore3=None,
ignore4=None): ignore4=None):
self.window.get_widget("prefs-stats-enable-net").set_active( self.widget("prefs-stats-enable-net").set_active(
self.config.get_stats_enable_net_poll()) self.config.get_stats_enable_net_poll())
def refresh_grabkeys_combination(self, ignore1=None, ignore2=None, def refresh_grabkeys_combination(self, ignore1=None, ignore2=None,
@ -165,8 +165,8 @@ class vmmPreferences(vmmGObjectUI):
if val is None: if val is None:
val = "Control_L+Alt_L" val = "Control_L+Alt_L"
prefs_button = self.window.get_widget("prefs-keys-grab-changebtn") prefs_button = self.widget("prefs-keys-grab-changebtn")
self.window.get_widget("prefs-keys-grab-sequence").set_text(val) self.widget("prefs-keys-grab-sequence").set_text(val)
if not self.config.vnc_grab_keys_supported(): if not self.config.vnc_grab_keys_supported():
util.tooltip_wrapper(prefs_button, util.tooltip_wrapper(prefs_button,
_("Installed version of GTK-VNC doesn't " _("Installed version of GTK-VNC doesn't "
@ -174,19 +174,24 @@ class vmmPreferences(vmmGObjectUI):
def refresh_confirm_forcepoweroff(self, ignore1=None, ignore2=None, def refresh_confirm_forcepoweroff(self, ignore1=None, ignore2=None,
ignore3=None, ignore4=None): ignore3=None, ignore4=None):
self.window.get_widget("prefs-confirm-forcepoweroff").set_active(self.config.get_confirm_forcepoweroff()) self.widget("prefs-confirm-forcepoweroff").set_active(
self.config.get_confirm_forcepoweroff())
def refresh_confirm_poweroff(self, ignore1=None, ignore2=None, def refresh_confirm_poweroff(self, ignore1=None, ignore2=None,
ignore3=None, ignore4=None): ignore3=None, ignore4=None):
self.window.get_widget("prefs-confirm-poweroff").set_active(self.config.get_confirm_poweroff()) self.widget("prefs-confirm-poweroff").set_active(
self.config.get_confirm_poweroff())
def refresh_confirm_pause(self, ignore1=None, ignore2=None, def refresh_confirm_pause(self, ignore1=None, ignore2=None,
ignore3=None, ignore4=None): ignore3=None, ignore4=None):
self.window.get_widget("prefs-confirm-pause").set_active(self.config.get_confirm_pause()) self.widget("prefs-confirm-pause").set_active(
self.config.get_confirm_pause())
def refresh_confirm_removedev(self, ignore1=None, ignore2=None, def refresh_confirm_removedev(self, ignore1=None, ignore2=None,
ignore3=None, ignore4=None): ignore3=None, ignore4=None):
self.window.get_widget("prefs-confirm-removedev").set_active(self.config.get_confirm_removedev()) self.widget("prefs-confirm-removedev").set_active(
self.config.get_confirm_removedev())
def refresh_confirm_interface(self, ignore1=None, ignore2=None, def refresh_confirm_interface(self, ignore1=None, ignore2=None,
ignore3=None, ignore4=None): ignore3=None, ignore4=None):
self.window.get_widget("prefs-confirm-interface").set_active(self.config.get_confirm_interface()) self.widget("prefs-confirm-interface").set_active(
self.config.get_confirm_interface())
def grabkeys_get_string(self, keysyms): def grabkeys_get_string(self, keysyms):
keystr = None keystr = None

View File

@ -62,10 +62,10 @@ class vmmStorageBrowser(vmmGObjectUI):
finish_img = gtk.image_new_from_stock(gtk.STOCK_NEW, finish_img = gtk.image_new_from_stock(gtk.STOCK_NEW,
gtk.ICON_SIZE_BUTTON) gtk.ICON_SIZE_BUTTON)
self.window.get_widget("new-volume").set_image(finish_img) self.widget("new-volume").set_image(finish_img)
finish_img = gtk.image_new_from_stock(gtk.STOCK_OPEN, finish_img = gtk.image_new_from_stock(gtk.STOCK_OPEN,
gtk.ICON_SIZE_BUTTON) gtk.ICON_SIZE_BUTTON)
self.window.get_widget("choose-volume").set_image(finish_img) self.widget("choose-volume").set_image(finish_img)
self.set_initial_state() self.set_initial_state()
@ -116,11 +116,11 @@ class vmmStorageBrowser(vmmGObjectUI):
self.vm_name = name self.vm_name = name
def set_initial_state(self): def set_initial_state(self):
pool_list = self.window.get_widget("pool-list") pool_list = self.widget("pool-list")
virtManager.host.init_pool_list(pool_list, self.pool_selected) virtManager.host.init_pool_list(pool_list, self.pool_selected)
# (Key, Name, Cap, Format, Used By, sensitive) # (Key, Name, Cap, Format, Used By, sensitive)
vol_list = self.window.get_widget("vol-list") vol_list = self.widget("vol-list")
volListModel = gtk.ListStore(str, str, str, str, str, bool) volListModel = gtk.ListStore(str, str, str, str, str, bool)
vol_list.set_model(volListModel) vol_list.set_model(volListModel)
@ -164,7 +164,7 @@ class vmmStorageBrowser(vmmGObjectUI):
self.remove_conn() self.remove_conn()
self.conn = conn self.conn = conn
pool_list = self.window.get_widget("pool-list") pool_list = self.widget("pool-list")
virtManager.host.populate_storage_pools(pool_list, self.conn) virtManager.host.populate_storage_pools(pool_list, self.conn)
ids = [] ids = []
@ -187,10 +187,10 @@ class vmmStorageBrowser(vmmGObjectUI):
tooltip = None tooltip = None
is_remote = self.conn.is_remote() is_remote = self.conn.is_remote()
self.window.get_widget("browse-local").set_sensitive(not is_remote) self.widget("browse-local").set_sensitive(not is_remote)
if is_remote: if is_remote:
tooltip = _("Cannot use local storage on remote connection.") tooltip = _("Cannot use local storage on remote connection.")
util.tooltip_wrapper(self.window.get_widget("browse-local"), util.tooltip_wrapper(self.widget("browse-local"),
tooltip) tooltip)
# Set data based on browse type # Set data based on browse type
@ -213,7 +213,7 @@ class vmmStorageBrowser(vmmGObjectUI):
return data["enable_create"] return data["enable_create"]
def current_pool(self): def current_pool(self):
row = util.get_list_selection(self.window.get_widget("pool-list")) row = util.get_list_selection(self.widget("pool-list"))
if not row: if not row:
return return
return self.conn.get_pool(row[0]) return self.conn.get_pool(row[0])
@ -221,7 +221,7 @@ class vmmStorageBrowser(vmmGObjectUI):
def current_vol_row(self): def current_vol_row(self):
if not self.current_pool(): if not self.current_pool():
return return
return util.get_list_selection(self.window.get_widget("vol-list")) return util.get_list_selection(self.widget("vol-list"))
def current_vol(self): def current_vol(self):
pool = self.current_pool() pool = self.current_pool()
@ -231,7 +231,7 @@ class vmmStorageBrowser(vmmGObjectUI):
return pool.get_volume(row[0]) return pool.get_volume(row[0])
def refresh_storage_pool(self, src_ignore, uri_ignore, uuid): def refresh_storage_pool(self, src_ignore, uri_ignore, uuid):
pool_list = self.window.get_widget("pool-list") pool_list = self.widget("pool-list")
virtManager.host.refresh_pool_in_list(pool_list, self.conn, uuid) virtManager.host.refresh_pool_in_list(pool_list, self.conn, uuid)
curpool = self.current_pool() curpool = self.current_pool()
if curpool.uuid != uuid: if curpool.uuid != uuid:
@ -239,10 +239,10 @@ class vmmStorageBrowser(vmmGObjectUI):
# Currently selected pool changed state: force a 'pool_selected' to # Currently selected pool changed state: force a 'pool_selected' to
# update vol list # update vol list
self.pool_selected(self.window.get_widget("pool-list").get_selection()) self.pool_selected(self.widget("pool-list").get_selection())
def repopulate_storage_pools(self, src_ignore, uri_ignore, uuid_ignore): def repopulate_storage_pools(self, src_ignore, uri_ignore, uuid_ignore):
pool_list = self.window.get_widget("pool-list") pool_list = self.widget("pool-list")
virtManager.host.populate_storage_pools(pool_list, self.conn) virtManager.host.populate_storage_pools(pool_list, self.conn)
@ -255,14 +255,14 @@ class vmmStorageBrowser(vmmGObjectUI):
newvol = pool.is_active() newvol = pool.is_active()
newvol = newvol and self.allow_create() newvol = newvol and self.allow_create()
self.window.get_widget("new-volume").set_sensitive(newvol) self.widget("new-volume").set_sensitive(newvol)
self.populate_storage_volumes() self.populate_storage_volumes()
def vol_selected(self, ignore=None): def vol_selected(self, ignore=None):
vol = self.current_vol_row() vol = self.current_vol_row()
canchoose = bool(vol and vol[5]) canchoose = bool(vol and vol[5])
self.window.get_widget("choose-volume").set_sensitive(canchoose) self.widget("choose-volume").set_sensitive(canchoose)
def refresh_current_pool(self, ignore): def refresh_current_pool(self, ignore):
cp = self.current_pool() cp = self.current_pool()
@ -310,7 +310,7 @@ class vmmStorageBrowser(vmmGObjectUI):
# Do stuff! # Do stuff!
def populate_storage_volumes(self): def populate_storage_volumes(self):
model = self.window.get_widget("vol-list").get_model() model = self.widget("vol-list").get_model()
model.clear() model.clear()
dironly = self.browse_reason == self.config.CONFIG_DIR_FS dironly = self.browse_reason == self.config.CONFIG_DIR_FS