mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-02-25 18:55:27 -06:00
console: Add sendkey menu to fullscreen toolbar
Break out the sendkey menu building and share it.
This commit is contained in:
parent
77479267f3
commit
6062920bfe
@ -38,6 +38,7 @@ import socket
|
||||
import logging
|
||||
|
||||
import virtManager.util as util
|
||||
import virtManager.uihelpers as uihelpers
|
||||
from virtManager.autodrawer import AutoDrawer
|
||||
from virtManager.baseclass import vmmGObjectUI, vmmGObject
|
||||
from virtManager.error import vmmErrorDialog
|
||||
@ -550,6 +551,7 @@ class vmmConsolePages(vmmGObjectUI):
|
||||
# Fullscreen toolbar
|
||||
self.fs_toolbar = None
|
||||
self.fs_drawer = None
|
||||
self.keycombo_menu = uihelpers.build_keycombo_menu(self.send_key)
|
||||
self.init_fs_toolbar()
|
||||
|
||||
finish_img = gtk.image_new_from_stock(gtk.STOCK_YES,
|
||||
@ -586,6 +588,8 @@ class vmmConsolePages(vmmGObjectUI):
|
||||
self.viewer.cleanup()
|
||||
self.viewer = None
|
||||
|
||||
self.keycombo_menu.destroy()
|
||||
self.keycombo_menu = None
|
||||
self.fs_toolbar.destroy()
|
||||
self.fs_toolbar = None
|
||||
self.fs_drawer.destroy()
|
||||
@ -612,6 +616,26 @@ class vmmConsolePages(vmmGObjectUI):
|
||||
self.fs_toolbar.add(button)
|
||||
button.connect("clicked", self.leave_fullscreen)
|
||||
|
||||
def keycombo_menu_clicked(src):
|
||||
ignore = src
|
||||
def menu_location(menu, toolbar):
|
||||
ignore = menu
|
||||
x, y = toolbar.window.get_origin()
|
||||
ignore, height = toolbar.window.get_size()
|
||||
|
||||
return x, y + height, True
|
||||
|
||||
self.keycombo_menu.popup(None, None, menu_location, 0,
|
||||
gtk.get_current_event_time(),
|
||||
self.fs_toolbar)
|
||||
|
||||
item = gtk.ToolButton()
|
||||
item.set_icon_name("preferences-desktop-keyboard-shortcuts")
|
||||
util.tooltip_wrapper(item, _("Send key combination"))
|
||||
item.show_all()
|
||||
item.connect("clicked", keycombo_menu_clicked)
|
||||
self.fs_toolbar.add(item)
|
||||
|
||||
self.fs_drawer = AutoDrawer()
|
||||
self.fs_drawer.set_active(False)
|
||||
self.fs_drawer.set_over(self.fs_toolbar)
|
||||
@ -781,38 +805,8 @@ class vmmConsolePages(vmmGObjectUI):
|
||||
self.topwin.resize(1, 1)
|
||||
self.queue_scroll_resize_helper(w, h)
|
||||
|
||||
def send_key(self, src):
|
||||
keys = None
|
||||
if src.get_name() == "details-menu-send-cad":
|
||||
keys = ["Control_L", "Alt_L", "Delete"]
|
||||
elif src.get_name() == "details-menu-send-cab":
|
||||
keys = ["Control_L", "Alt_L", "BackSpace"]
|
||||
elif src.get_name() == "details-menu-send-caf1":
|
||||
keys = ["Control_L", "Alt_L", "F1"]
|
||||
elif src.get_name() == "details-menu-send-caf2":
|
||||
keys = ["Control_L", "Alt_L", "F2"]
|
||||
elif src.get_name() == "details-menu-send-caf3":
|
||||
keys = ["Control_L", "Alt_L", "F3"]
|
||||
elif src.get_name() == "details-menu-send-caf4":
|
||||
keys = ["Control_L", "Alt_L", "F4"]
|
||||
elif src.get_name() == "details-menu-send-caf5":
|
||||
keys = ["Control_L", "Alt_L", "F5"]
|
||||
elif src.get_name() == "details-menu-send-caf6":
|
||||
keys = ["Control_L", "Alt_L", "F6"]
|
||||
elif src.get_name() == "details-menu-send-caf7":
|
||||
keys = ["Control_L", "Alt_L", "F7"]
|
||||
elif src.get_name() == "details-menu-send-caf8":
|
||||
keys = ["Control_L", "Alt_L", "F8"]
|
||||
elif src.get_name() == "details-menu-send-caf9":
|
||||
keys = ["Control_L", "Alt_L", "F9"]
|
||||
elif src.get_name() == "details-menu-send-caf10":
|
||||
keys = ["Control_L", "Alt_L", "F10"]
|
||||
elif src.get_name() == "details-menu-send-caf11":
|
||||
keys = ["Control_L", "Alt_L", "F11"]
|
||||
elif src.get_name() == "details-menu-send-caf12":
|
||||
keys = ["Control_L", "Alt_L", "F12"]
|
||||
elif src.get_name() == "details-menu-send-printscreen":
|
||||
keys = ["Print"]
|
||||
def send_key(self, src, keys):
|
||||
ignore = src
|
||||
|
||||
if keys != None:
|
||||
self.viewer.send_keys(keys)
|
||||
|
@ -257,6 +257,7 @@ class vmmDetails(vmmGObjectUI):
|
||||
self.topwin.set_default_size(w or 800, h or 600)
|
||||
|
||||
self.addhwmenu = None
|
||||
self.keycombo_menu = None
|
||||
self.init_menus()
|
||||
self.init_details()
|
||||
|
||||
@ -382,22 +383,6 @@ class vmmDetails(vmmGObjectUI):
|
||||
"on_details_menu_view_scale_fullscreen_toggled": self.console.set_scale_type,
|
||||
"on_details_menu_view_scale_never_toggled": self.console.set_scale_type,
|
||||
|
||||
"on_details_menu_send_cad_activate": self.console.send_key,
|
||||
"on_details_menu_send_cab_activate": self.console.send_key,
|
||||
"on_details_menu_send_caf1_activate": self.console.send_key,
|
||||
"on_details_menu_send_caf2_activate": self.console.send_key,
|
||||
"on_details_menu_send_caf3_activate": self.console.send_key,
|
||||
"on_details_menu_send_caf4_activate": self.console.send_key,
|
||||
"on_details_menu_send_caf5_activate": self.console.send_key,
|
||||
"on_details_menu_send_caf6_activate": self.console.send_key,
|
||||
"on_details_menu_send_caf7_activate": self.console.send_key,
|
||||
"on_details_menu_send_caf8_activate": self.console.send_key,
|
||||
"on_details_menu_send_caf9_activate": self.console.send_key,
|
||||
"on_details_menu_send_caf10_activate": self.console.send_key,
|
||||
"on_details_menu_send_caf11_activate": self.console.send_key,
|
||||
"on_details_menu_send_caf12_activate": self.console.send_key,
|
||||
"on_details_menu_send_printscreen_activate": self.console.send_key,
|
||||
|
||||
"on_console_auth_password_activate": self.console.auth_login,
|
||||
"on_console_auth_login_clicked": self.console.auth_login,
|
||||
})
|
||||
@ -531,6 +516,12 @@ class vmmDetails(vmmGObjectUI):
|
||||
self.window.get_widget("console-pages").set_show_tabs(False)
|
||||
self.window.get_widget("details-menu-view-toolbar").set_active(self.config.get_details_show_toolbar())
|
||||
|
||||
# Keycombo menu (ctrl+alt+del etc.)
|
||||
self.keycombo_menu = uihelpers.build_keycombo_menu(
|
||||
self.console.send_key)
|
||||
self.window.get_widget("details-menu-send-key").set_submenu(
|
||||
self.keycombo_menu)
|
||||
|
||||
# XXX: Help docs useless/out of date
|
||||
self.window.get_widget("help_menuitem").hide()
|
||||
|
||||
|
@ -839,3 +839,30 @@ def build_startmode_combo(start_list):
|
||||
start_model.append(["none"])
|
||||
start_model.append(["onboot"])
|
||||
start_model.append(["hotplug"])
|
||||
|
||||
|
||||
#########################
|
||||
# Console keycombo menu #
|
||||
#########################
|
||||
|
||||
def build_keycombo_menu(cb):
|
||||
menu = gtk.Menu()
|
||||
|
||||
def make_item(name, combo):
|
||||
item = gtk.MenuItem(name, use_underline=True)
|
||||
item.connect("activate", cb, combo)
|
||||
|
||||
menu.add(item)
|
||||
|
||||
make_item("Ctrl+Alt+_Backspace", ["Control_L", "Alt_L", "BackSpace"])
|
||||
make_item("Ctrl+Alt+_Delete", ["Control_L", "Alt_L", "Delete"])
|
||||
menu.add(gtk.SeparatorMenuItem())
|
||||
|
||||
for i in range(1, 13):
|
||||
make_item("Ctrl+Alt+F_%d" % i, ["Control_L", "Alt_L", "F%d" % i])
|
||||
menu.add(gtk.SeparatorMenuItem())
|
||||
|
||||
make_item("_Printscreen", ["Print"])
|
||||
|
||||
menu.show_all()
|
||||
return menu
|
||||
|
@ -331,140 +331,6 @@
|
||||
<property name="label" translatable="yes">Send _Key</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_details-menu-send-key_activate"/>
|
||||
<child>
|
||||
<widget class="GtkMenu" id="details-menu-send-key_menu">
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="details-menu-send-cab">
|
||||
<property name="visible">True</property>
|
||||
<property name="label">Ctrl+Alt+_Backspace</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_details_menu_send_cab_activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="details-menu-send-cad">
|
||||
<property name="visible">True</property>
|
||||
<property name="label">Ctrl+Alt+_Delete</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_details_menu_send_cad_activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkSeparatorMenuItem" id="separator9">
|
||||
<property name="visible">True</property>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="details-menu-send-caf1">
|
||||
<property name="visible">True</property>
|
||||
<property name="label">Ctrl+Alt+F_1</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_details_menu_send_caf1_activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="details-menu-send-caf2">
|
||||
<property name="visible">True</property>
|
||||
<property name="label">Ctrl+Alt+F_2</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_details_menu_send_caf2_activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="details-menu-send-caf3">
|
||||
<property name="visible">True</property>
|
||||
<property name="label">Ctrl+Alt+F_3</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_details_menu_send_caf3_activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="details-menu-send-caf4">
|
||||
<property name="visible">True</property>
|
||||
<property name="label">Ctrl+Alt+F_4</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_details_menu_send_caf4_activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="details-menu-send-caf5">
|
||||
<property name="visible">True</property>
|
||||
<property name="label">Ctrl+Alt+F_5</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_details_menu_send_caf5_activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="details-menu-send-caf6">
|
||||
<property name="visible">True</property>
|
||||
<property name="label">Ctrl+Alt+F_6</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_details_menu_send_caf6_activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="details-menu-send-caf7">
|
||||
<property name="visible">True</property>
|
||||
<property name="label">Ctrl+Alt+F_7</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_details_menu_send_caf7_activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="details-menu-send-caf8">
|
||||
<property name="visible">True</property>
|
||||
<property name="label">Ctrl+Alt+F_8</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_details_menu_send_caf8_activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="details-menu-send-caf9">
|
||||
<property name="visible">True</property>
|
||||
<property name="label">Ctrl+Alt+F_9</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_details_menu_send_caf9_activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="details-menu-send-caf10">
|
||||
<property name="visible">True</property>
|
||||
<property name="label">Ctrl+Alt+F1_0</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_details_menu_send_caf10_activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="details-menu-send-caf11">
|
||||
<property name="visible">True</property>
|
||||
<property name="label">C_trl+Alt+F11</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_details_menu_send_caf11_activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="details-menu-send-caf12">
|
||||
<property name="visible">True</property>
|
||||
<property name="label">Ct_rl+Alt+F12</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_details_menu_send_caf12_activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkSeparatorMenuItem" id="separator10">
|
||||
<property name="visible">True</property>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="details-menu-send-printscreen">
|
||||
<property name="visible">True</property>
|
||||
<property name="label">_PrintScreen</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_details_menu_send_printscreen_activate"/>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
|
Loading…
Reference in New Issue
Block a user