Make 'Escape' key close dialogs

We should get this for free by using gtk Dialogs for our various UI pieces,
however the stock dialog is pretty restrictive WRT widget spacing, and
prevents us from make our nice blue header, so we are stuck with gtk.Windows
This commit is contained in:
Cole Robinson 2009-12-14 16:45:55 -05:00
parent 287ad90a90
commit 352affbe3a
11 changed files with 25 additions and 6 deletions

View File

@ -30,7 +30,7 @@ import gtk.glade
import virtinst
from virtinst import VirtualCharDevice, VirtualDevice, VirtualVideoDevice
import virtManager.util as vmmutil
import virtManager.util as util
import virtManager.uihelpers as uihelpers
from virtManager.asyncjob import vmmAsyncJob
from virtManager.error import vmmErrorDialog
@ -132,6 +132,7 @@ class vmmAddHardware(gobject.GObject):
"char_bind_host_focus_in": (self.update_doc, "bind_host"),
"char_telnet_focus_in": (self.update_doc, "protocol"),
})
util.bind_escape_key_close(self)
# XXX: Help docs useless/out of date
self.window.get_widget("create-help").hide()
@ -344,7 +345,7 @@ class vmmAddHardware(gobject.GObject):
error = self.vm.get_connection().netdev_error
if error:
net_warn.show()
vmmutil.tooltip_wrapper(net_warn, error)
util.tooltip_wrapper(net_warn, error)
else:
net_warn.hide()
@ -1108,7 +1109,7 @@ class vmmAddHardware(gobject.GObject):
# If creating disk via storage API, we need to thread
# off a new connection
if disk.vol_install:
newconn = vmmutil.dup_lib_conn(self.config, disk.conn)
newconn = util.dup_lib_conn(self.config, disk.conn)
disk.conn = newconn
logging.debug("Starting background file allocate process")
disk.setup(meter)
@ -1172,8 +1173,8 @@ class vmmAddHardware(gobject.GObject):
try:
if (os.path.dirname(os.path.abspath(path)) ==
vmmutil.DEFAULT_POOL_PATH):
vmmutil.build_default_pool(self.vm.get_connection().vmm)
util.DEFAULT_POOL_PATH):
util.build_default_pool(self.vm.get_connection().vmm)
self._dev = virtinst.VirtualDisk(self.get_config_disk_image(),
filesize,

View File

@ -128,6 +128,7 @@ class vmmCloneVM(gobject.GObject):
"on_clone_ok_clicked" : self.finish,
"on_clone_help_clicked" : self.show_help,
})
util.bind_escape_key_close(self)
# XXX: Help docs useless/out of date
self.window.get_widget("clone-help").hide()

View File

@ -134,6 +134,7 @@ class vmmCreate(gobject.GObject):
"on_config_hv_changed": self.hv_changed,
"on_config_arch_changed": self.arch_changed,
})
util.bind_escape_key_close(self)
self.set_initial_state()

View File

@ -26,6 +26,7 @@ import logging
import re
import traceback
import virtManager.util as util
from virtManager.IPy import IP
from virtManager.network import vmmNetwork
from virtManager.error import vmmErrorDialog
@ -70,6 +71,7 @@ class vmmCreateNetwork(gobject.GObject):
"on_net_dhcp_end_changed": self.change_dhcp_end,
"on_create_help_clicked": self.show_help,
})
util.bind_escape_key_close(self)
# XXX: Help docs useless/out of date
self.window.get_widget("create-help").hide()

View File

@ -104,6 +104,7 @@ class vmmCreatePool(gobject.GObject):
"pool-info2"),
"on_pool_build_focus_in_event": (self.update_build_doc)
})
util.bind_escape_key_close(self)
# XXX: Help docs useless/out of date
self.window.get_widget("pool-help").hide()

View File

@ -67,6 +67,7 @@ class vmmCreateVolume(gobject.GObject):
"on_vol_allocation_value_changed" : self.vol_allocation_changed,
"on_vol_capacity_value_changed" : self.vol_capacity_changed,
})
util.bind_escape_key_close(self)
format_list = self.window.get_widget("vol-format")
format_model = gtk.ListStore(str, str)

View File

@ -68,6 +68,7 @@ class vmmDeleteDialog(gobject.GObject):
"on_delete_ok_clicked" : self.finish,
"on_delete_remove_storage_toggled" : self.toggle_remove_storage,
})
util.bind_escape_key_close(self)
image = gtk.image_new_from_icon_name("vm_delete_wizard",
gtk.ICON_SIZE_DIALOG)

View File

@ -79,6 +79,7 @@ class vmmMigrateDialog(gobject.GObject):
"on_migrate_set_interface_toggled" : self.toggle_set_interface,
"on_migrate_set_port_toggled" : self.toggle_set_port,
})
util.bind_escape_key_close(self)
blue = gtk.gdk.color_parse("#0072A8")
self.window.get_widget("migrate-header").modify_bg(gtk.STATE_NORMAL,

View File

@ -21,6 +21,8 @@
import gtk.glade
import gobject
import virtManager.util as util
PREFS_PAGE_STATS = 0
PREFS_PAGE_VM_PREFS = 1
@ -87,6 +89,7 @@ class vmmPreferences(gobject.GObject):
"on_prefs_confirm_pause_toggled": self.change_confirm_pause,
"on_prefs_confirm_removedev_toggled": self.change_confirm_removedev,
})
util.bind_escape_key_close(self)
# XXX: Help docs useless/out of date
self.window.get_widget("prefs-help").hide()

View File

@ -77,7 +77,7 @@ class vmmStorageBrowser(gobject.GObject):
"on_choose_volume_clicked" : self.finish,
"on_vol_list_row_activated" : self.finish,
})
util.bind_escape_key_close(self)
finish_img = gtk.image_new_from_stock(gtk.STOCK_NEW,
gtk.ICON_SIZE_BUTTON)

View File

@ -254,3 +254,10 @@ def uuidstr(rawuuid):
if i == 3 or i == 5 or i == 7 or i == 9:
uuid.append('-')
return "".join(uuid)
def bind_escape_key_close(vmmobj):
def close_on_escape(src, event):
if gtk.gdk.keyval_name(event.keyval) == "Escape":
vmmobj.close()
vmmobj.topwin.connect("key-press-event", close_on_escape)