Set parent for all dialogs

This commit is contained in:
Cole Robinson
2011-04-14 08:47:42 -04:00
parent fd755f99d5
commit 3d8e6a9398
18 changed files with 99 additions and 70 deletions
+7 -5
View File
@@ -157,8 +157,9 @@ class vmmAddHardware(vmmGObjectUI):
return doc
def show(self):
def show(self, parent):
self.reset_state()
self.topwin.set_transient_for(parent)
self.topwin.present()
def close(self, ignore1=None, ignore2=None):
@@ -932,9 +933,10 @@ class vmmAddHardware(vmmGObjectUI):
progWin = vmmAsyncJob(do_file_allocate,
[self._dev],
title=_("Creating Storage File"),
text=_("Allocation of disk storage may take "
"a few minutes to complete."))
_("Creating Storage File"),
_("Allocation of disk storage may take "
"a few minutes to complete."),
self.topwin)
return progWin.run()
@@ -1258,7 +1260,7 @@ class vmmAddHardware(vmmGObjectUI):
self.storage_browser.set_finish_cb(set_storage_cb)
self.storage_browser.set_browse_reason(self.config.CONFIG_DIR_IMAGE)
self.storage_browser.show(conn)
self.storage_browser.show(self.topwin, conn)
def show_help(self, src_ignore):
# help to show depends on the notebook page, yahoo
+3 -2
View File
@@ -54,7 +54,7 @@ def cb_wrapper(callback, asyncjob, *args, **kwargs):
def _simple_async(callback, args, title, text, parent, errorintro,
show_progress):
asyncjob = vmmAsyncJob(callback, args, title, text,
asyncjob = vmmAsyncJob(callback, args, title, text, parent.topwin,
show_progress=show_progress)
error, details = asyncjob.run()
if error is None:
@@ -76,7 +76,7 @@ class vmmAsyncJob(vmmGObjectUI):
_simple_async(callback, args, "", "", parent, errorintro, False)
def __init__(self, callback, args, title, text,
def __init__(self, callback, args, title, text, parent,
run_main=True, show_progress=True,
cancel_back=None, cancel_args=None):
vmmGObjectUI.__init__(self, "vmm-progress.glade", "vmm-progress")
@@ -98,6 +98,7 @@ class vmmAsyncJob(vmmGObjectUI):
self.stage = self.window.get_widget("pbar-stage")
self.pbar = self.window.get_widget("pbar")
self.window.get_widget("pbar-text").set_text(text)
self.topwin.set_transient_for(parent)
args = [self] + args
self.bg_thread = asyncJobWorker(callback, args)
+3 -2
View File
@@ -65,8 +65,9 @@ class vmmChooseCD(vmmGObjectUI):
return 1
def show(self):
def show(self, parent):
self.reset_state()
self.topwin.set_transient_for(parent)
self.topwin.show()
def cleanup(self):
@@ -166,6 +167,6 @@ class vmmChooseCD(vmmGObjectUI):
self.set_storage_path)
self.storage_browser.set_browse_reason(self.config.CONFIG_DIR_MEDIA)
self.storage_browser.show(self.conn)
self.storage_browser.show(self.topwin, self.conn)
vmmGObjectUI.type_register(vmmChooseCD)
+6 -3
View File
@@ -93,6 +93,7 @@ class vmmCloneVM(vmmGObjectUI):
"on_change_mac_cancel_clicked" : self.change_mac_close,
"on_change_mac_ok_clicked" : self.change_mac_finish,
})
self.change_mac.set_transient_for(self.topwin)
self.change_storage_window = gtk.glade.XML(self.gladefile,
"vmm-change-storage",
@@ -106,6 +107,7 @@ class vmmCloneVM(vmmGObjectUI):
"on_change_storage_browse_clicked" : self.change_storage_browse,
})
self.change_storage.set_transient_for(self.topwin)
self.window.signal_autoconnect({
"on_clone_delete_event" : self.close,
@@ -123,8 +125,9 @@ class vmmCloneVM(vmmGObjectUI):
self.set_initial_state()
def show(self):
def show(self, parent):
self.reset_state()
self.topwin.set_transient_for(parent)
self.topwin.present()
def close(self, ignore1=None, ignore2=None):
@@ -754,7 +757,7 @@ class vmmCloneVM(vmmGObjectUI):
if self.clone_design.clone_devices:
text = title + _(" and selected storage (this may take a while)")
progWin = vmmAsyncJob(self._async_clone, [], title, text)
progWin = vmmAsyncJob(self._async_clone, [], title, text, self.topwin)
error, details = progWin.run()
self.topwin.set_sensitive(True)
@@ -799,7 +802,7 @@ class vmmCloneVM(vmmGObjectUI):
self.storage_browser = vmmStorageBrowser(self.conn)
self.storage_browser.connect("storage-browse-finish", callback)
self.storage_browser.show(self.conn)
self.storage_browser.show(self.topwin, self.conn)
def show_help(self, ignore1=None):
# Nothing yet
+3 -2
View File
@@ -106,9 +106,10 @@ class vmmConnect(vmmGObjectUI):
self.topwin.hide()
self.stop_browse()
def show(self):
self.topwin.present()
def show(self, parent):
self.reset_state()
self.topwin.set_transient_for(parent)
self.topwin.present()
def set_initial_state(self):
stock_img = gtk.image_new_from_stock(gtk.STOCK_CONNECT,
+11 -10
View File
@@ -144,9 +144,10 @@ class vmmCreate(vmmGObjectUI):
return True
return False
def show(self, uri=None):
def show(self, parent, uri=None):
self.reset_state(uri)
self.topwin.show()
self.topwin.set_transient_for(parent)
self.topwin.present()
def close(self, ignore1=None, ignore2=None):
@@ -1617,7 +1618,6 @@ class vmmCreate(vmmGObjectUI):
self.config_window = vmmDetails(virtinst_guest,
self.engine,
self.topwin)
self.config_window_signal = self.config_window.connect(
"details-closed",
@@ -1627,12 +1627,13 @@ class vmmCreate(vmmGObjectUI):
def start_install(self, guest):
progWin = vmmAsyncJob(self.do_install, [guest],
title=_("Creating Virtual Machine"),
text=_("The virtual machine is now being "
"created. Allocation of disk storage "
"and retrieval of the installation "
"images may take a few minutes to "
"complete."))
_("Creating Virtual Machine"),
_("The virtual machine is now being "
"created. Allocation of disk storage "
"and retrieval of the installation "
"images may take a few minutes to "
"complete."),
self.topwin)
error, details = progWin.run()
self.topwin.set_sensitive(True)
@@ -1859,7 +1860,7 @@ class vmmCreate(vmmGObjectUI):
self.storage_browser.set_vm_name(self.get_config_name())
self.storage_browser.set_finish_cb(callback)
self.storage_browser.set_browse_reason(reason)
self.storage_browser.show(self.conn)
self.storage_browser.show(self.topwin, self.conn)
def show_help(self, ignore):
# No help available yet.
+8 -4
View File
@@ -80,6 +80,7 @@ class vmmCreateInterface(vmmGObjectUI):
"on_bridge_config_delete_event": self.bridge_config_finish,
"on_bridge_ok_clicked" : self.bridge_config_finish,
})
self.bridge_config.set_transient_for(self.topwin)
# Bond configuration dialog
self.bond_config_win = gtk.glade.XML(self.gladefile,
@@ -92,6 +93,7 @@ class vmmCreateInterface(vmmGObjectUI):
"on_bond_monitor_mode_changed": self.bond_monitor_mode_changed,
})
self.bond_config.set_transient_for(self.topwin)
self.ip_config_win = gtk.glade.XML(self.gladefile,
"ip-config",
@@ -109,6 +111,7 @@ class vmmCreateInterface(vmmGObjectUI):
"on_ipv6_address_add_clicked": self.ipv6_address_add,
"on_ipv6_address_remove_clicked": self.ipv6_address_remove,
})
self.ip_config.set_transient_for(self.topwin)
self.ip_manually_changed = False
@@ -131,8 +134,9 @@ class vmmCreateInterface(vmmGObjectUI):
self.set_initial_state()
def show(self):
def show(self, parent):
self.reset_state()
self.topwin.set_transient_for(parent)
self.topwin.present()
def show_bond_config(self, src):
@@ -1128,9 +1132,9 @@ class vmmCreateInterface(vmmGObjectUI):
self.topwin.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH))
progWin = vmmAsyncJob(self.do_install, [activate],
title=_("Creating virtual interface"),
text=_("The virtual interface is now being "
"created."))
_("Creating virtual interface"),
_("The virtual interface is now being created."),
self.topwin)
error, details = progWin.run()
self.topwin.set_sensitive(True)
+2 -1
View File
@@ -71,8 +71,9 @@ class vmmCreateNetwork(vmmGObjectUI):
self.set_initial_state()
def show(self):
def show(self, parent):
self.reset_state()
self.topwin.set_transient_for(parent)
self.topwin.present()
def is_visible(self):
+8 -7
View File
@@ -103,8 +103,9 @@ class vmmCreatePool(vmmGObjectUI):
self.set_initial_state()
def show(self):
def show(self, parent):
self.reset_state()
self.topwin.set_transient_for(parent)
self.topwin.present()
def close(self, ignore1=None, ignore2=None):
@@ -399,9 +400,10 @@ class vmmCreatePool(vmmGObjectUI):
self.topwin.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH))
progWin = vmmAsyncJob(self._async_pool_create, [],
title=_("Creating storage pool..."),
text=_("Creating the storage pool may take a "
"while..."))
_("Creating storage pool..."),
_("Creating the storage pool may take a "
"while..."),
self.topwin)
error, details = progWin.run()
self.topwin.set_sensitive(True)
@@ -414,8 +416,7 @@ class vmmCreatePool(vmmGObjectUI):
else:
self.close()
def _async_pool_create(self, asyncjob, *args, **kwargs):
print args, kwargs
def _async_pool_create(self, asyncjob):
newconn = None
# Open a seperate connection to install on since this is async
@@ -427,7 +428,7 @@ class vmmCreatePool(vmmGObjectUI):
build = self.window.get_widget("pool-build").get_active()
poolobj = self._pool.install(create=True, meter=meter, build=build)
poolobj.setAutostart(True)
logging.debug("Pool creating succeeded.")
logging.debug("Pool creation succeeded")
def page_changed(self, notebook_ignore, page_ignore, page_number):
if page_number == PAGE_NAME:
+4 -2
View File
@@ -75,8 +75,9 @@ class vmmCreateVolume(vmmGObjectUI):
self.reset_state()
def show(self):
def show(self, parent):
self.reset_state()
self.topwin.set_transient_for(parent)
self.topwin.present()
def close(self, ignore1=None, ignore2=None):
@@ -217,7 +218,8 @@ class vmmCreateVolume(vmmGObjectUI):
progWin = vmmAsyncJob(self._async_vol_create, [],
_("Creating storage volume..."),
_("Creating the storage volume may take a "
"while..."))
"while..."),
self.topwin)
error, details = progWin.run()
self.topwin.set_sensitive(True)
+3 -2
View File
@@ -70,11 +70,12 @@ class vmmDeleteDialog(vmmGObjectUI):
self.window.get_widget("delete-storage-list").set_sensitive(dodel)
def show(self, vm):
def show(self, vm, parent):
self.vm = vm
self.conn = vm.get_connection()
self.reset_state()
self.topwin.set_transient_for(parent)
self.topwin.present()
def close(self, ignore1=None, ignore2=None):
@@ -139,7 +140,7 @@ class vmmDeleteDialog(vmmGObjectUI):
text = title + _(" and selected storage (this may take a while)")
progWin = vmmAsyncJob(self._async_delete, [devs],
title=title, text=text)
title, text, self.topwin)
error, details = progWin.run()
self.topwin.set_sensitive(True)
+3 -3
View File
@@ -1207,7 +1207,7 @@ class vmmDetails(vmmGObjectUI):
if self.addhw is None:
self.addhw = vmmAddHardware(self.vm)
self.addhw.show()
self.addhw.show(self.topwin)
except Exception, e:
self.err.show_err((_("Error launching hardware dialog: %s") %
str(e)))
@@ -1430,7 +1430,7 @@ class vmmDetails(vmmGObjectUI):
self.storage_browser.set_finish_cb(callback)
self.storage_browser.set_browse_reason(reason)
self.storage_browser.show(self.conn)
self.storage_browser.show(self.topwin, self.conn)
def browse_kernel(self, src_ignore):
def cb(ignore, path):
@@ -1626,7 +1626,7 @@ class vmmDetails(vmmGObjectUI):
dialog = self.media_choosers[devtype]
dialog.dev_id_info = dev_id_info
dialog.show()
dialog.show(self.topwin)
##################################################
# Details/Hardware config changes (apply button) #
+9 -7
View File
@@ -94,7 +94,7 @@ def check_packagekit(errbox, packages, libvirt_packages):
[session, pk_control, packages],
_("Searching for available hypervisors..."),
_("Searching for available hypervisors..."),
run_main=False)
None, run_main=False)
error, ignore = progWin.run()
if error:
return
@@ -639,7 +639,7 @@ class vmmEngine(vmmGObject):
def _do_show_preferences(self, src):
try:
self._get_preferences().show()
self._get_preferences().show(src.topwin)
except Exception, e:
src.err.show_err(_("Error launching preferences: %s") % str(e))
@@ -681,7 +681,7 @@ class vmmEngine(vmmGObject):
def _do_show_connect(self, src):
try:
self._get_connect_dialog().show()
self._get_connect_dialog().show(src.topwin)
except Exception, e:
src.err.show_err(_("Error launching connect dialog: %s") % str(e))
@@ -783,7 +783,7 @@ class vmmEngine(vmmGObject):
def _do_show_create(self, src, uri):
try:
self._get_create_dialog().show(uri)
self._get_create_dialog().show(src.topwin, uri)
except Exception, e:
src.err.show_err(_("Error launching manager: %s") % str(e))
@@ -796,7 +796,7 @@ class vmmEngine(vmmGObject):
self.windowMigrate = vmmMigrateDialog(vm, self)
self.windowMigrate.set_state(vm)
self.windowMigrate.show()
self.windowMigrate.show(src.topwin)
except Exception, e:
src.err.show_err(_("Error launching migrate dialog: %s") % str(e))
@@ -813,7 +813,7 @@ class vmmEngine(vmmGObject):
else:
clone_window.set_orig_vm(orig_vm)
clone_window.show()
clone_window.show(src.topwin)
except Exception, e:
src.err.show_err(_("Error setting clone parameters: %s") % str(e))
@@ -899,6 +899,7 @@ class vmmEngine(vmmGObject):
[vm, path],
_("Saving Virtual Machine"),
_("Saving virtual machine memory to disk "),
src.topwin,
cancel_back=_cancel_back,
cancel_args=_cancel_args)
error, details = progWin.run()
@@ -949,7 +950,8 @@ class vmmEngine(vmmGObject):
progWin = vmmAsyncJob(self._restore_saved_callback,
[path, conn],
_("Restoring Virtual Machine"),
_("Restoring virtual machine memory from disk"))
_("Restoring virtual machine memory from disk"),
src.topwin)
error, details = progWin.run()
if error is not None:
+4 -4
View File
@@ -464,7 +464,7 @@ class vmmHost(vmmGObjectUI):
try:
if self.addnet is None:
self.addnet = vmmCreateNetwork(self.conn)
self.addnet.show()
self.addnet.show(self.topwin)
except Exception, e:
self.err.show_err(_("Error launching network wizard: %s") % str(e))
@@ -697,7 +697,7 @@ class vmmHost(vmmGObjectUI):
try:
if self.addpool is None:
self.addpool = vmmCreatePool(self.conn)
self.addpool.show()
self.addpool.show(self.topwin)
except Exception, e:
self.err.show_err(_("Error launching pool wizard: %s") % str(e))
@@ -714,7 +714,7 @@ class vmmHost(vmmGObjectUI):
self.addvol.connect("vol-created", self.refresh_current_pool)
else:
self.addvol.set_parent_pool(pool)
self.addvol.show()
self.addvol.show(self.topwin)
except Exception, e:
self.err.show_err(_("Error launching volume wizard: %s") % str(e))
@@ -975,7 +975,7 @@ class vmmHost(vmmGObjectUI):
try:
if self.addinterface is None:
self.addinterface = vmmCreateInterface(self.conn)
self.addinterface.show()
self.addinterface.show(self.topwin)
except Exception, e:
self.err.show_err(_("Error launching interface wizard: %s") %
str(e))
+1 -1
View File
@@ -630,7 +630,7 @@ class vmmManager(vmmGObjectUI):
if not self.delete_dialog:
self.delete_dialog = vmmDeleteDialog()
self.delete_dialog.show(vm)
self.delete_dialog.show(vm, self.topwin)
def set_pause_state(self, state):
src = self.window.get_widget("vm-pause")
+3 -2
View File
@@ -82,9 +82,9 @@ class vmmMigrateDialog(vmmGObjectUI):
self.init_state()
def show(self):
def show(self, parent):
self.reset_state()
self.topwin.show()
self.topwin.set_transient_for(parent)
self.topwin.present()
def close(self, ignore1=None, ignore2=None):
@@ -465,6 +465,7 @@ class vmmMigrateDialog(vmmGObjectUI):
(_("Migrating VM '%s' from %s to %s. "
"This may take awhile.") %
(self.vm.get_name(), srchost, dsthost)),
self.topwin,
cancel_back=_cancel_back,
cancel_args=_cancel_args)
error, details = progWin.run()
+18 -10
View File
@@ -102,7 +102,8 @@ class vmmPreferences(vmmGObjectUI):
self.topwin.hide()
return 1
def show(self):
def show(self, parent):
self.topwin.set_transient_for(parent)
self.topwin.present()
#########################
@@ -228,19 +229,26 @@ class vmmPreferences(vmmGObjectUI):
def change_grab_keys(self, src_ignore):
dialog = gtk.Dialog(_("Configure grab key combination"),
None,
self.topwin,
gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,
gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
label = gtk.Label(_("Please press desired grab key combination"))
dialog.set_size_request(325, 160)
(dialog.get_content_area()).add(
gtk.Label(_("You can now define grab keys by pressing them.\n"
"To confirm your selection please click OK button\n"
"while you have desired keys pressed.")))
dialog.set_default_size(325, 160)
dialog.set_border_width(6)
(dialog.get_content_area()).add(label)
defs = {'label': label, 'keysyms': []}
infolabel = gtk.Label(
_("You can now define grab keys by pressing them.\n"
"To confirm your selection please click OK button\n"
"while you have desired keys pressed."))
keylabel = gtk.Label(_("Please press desired grab key combination"))
vbox = gtk.VBox()
vbox.set_spacing(12)
vbox.pack_start(infolabel, False, False)
vbox.pack_start(keylabel, False, False)
dialog.get_content_area().add(vbox)
defs = {'label': keylabel, 'keysyms': []}
dialog.connect("key-press-event", self.grabkeys_dlg_press, defs)
dialog.connect("key-release-event", self.grabkeys_dlg_release, defs)
dialog.show_all()
+3 -3
View File
@@ -32,7 +32,6 @@ from virtManager.baseclass import vmmGObjectUI
class vmmStorageBrowser(vmmGObjectUI):
__gsignals__ = {
#"vol-created": (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, [])
"storage-browse-finish": (gobject.SIGNAL_RUN_FIRST,
gobject.TYPE_NONE, [str]),
}
@@ -76,8 +75,9 @@ class vmmStorageBrowser(vmmGObjectUI):
self.set_initial_state()
def show(self, conn=None):
def show(self, parent, conn=None):
self.reset_state(conn)
self.topwin.set_transient_for(parent)
self.topwin.present()
def close(self, ignore1=None, ignore2=None):
@@ -275,7 +275,7 @@ class vmmStorageBrowser(vmmGObjectUI):
self.addvol.set_parent_pool(pool)
self.addvol.set_modal(True)
self.addvol.set_name_hint(self.vm_name)
self.addvol.show()
self.addvol.show(self.topwin)
except Exception, e:
self.show_err(_("Error launching volume wizard: %s") % str(e))