aboutsummaryrefslogtreecommitdiff
path: root/voctogui/lib/shortcuts.py
diff options
context:
space:
mode:
authorFlorian Zeitz <florob@babelmonkeys.de>2017-01-06 04:36:44 +0100
committerFlorian Zeitz <florob@babelmonkeys.de>2017-01-31 22:58:42 +0100
commit882ea5ba6e46b413694d9a74a6aa246d2c7153f5 (patch)
tree757d464099f7d35eca9ffa20e2f07ef4c38160c0 /voctogui/lib/shortcuts.py
parentb66d7b2d653f65a318d67b413d8680123bf14b25 (diff)
Add a ShortcutsWindow and tooltips to display accelerators
The GtkShortcutsWindow is shown upon pressing `?`. This is only available in Gtk+ >= 3.20. For earlier versions nothing happens.
Diffstat (limited to 'voctogui/lib/shortcuts.py')
-rw-r--r--voctogui/lib/shortcuts.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/voctogui/lib/shortcuts.py b/voctogui/lib/shortcuts.py
new file mode 100644
index 0000000..d591a03
--- /dev/null
+++ b/voctogui/lib/shortcuts.py
@@ -0,0 +1,59 @@
+from gi.repository import Gtk
+
+from lib.config import Config
+
+
+class ShortcutsWindow(Gtk.ShortcutsWindow):
+ def __init__(self, win):
+ Gtk.ShortcutsWindow.__init__(self)
+ self.build()
+ self.set_position(Gtk.WindowPosition.CENTER_ALWAYS)
+ self.set_transient_for(win)
+ self.set_modal(True)
+
+ def build(self):
+ section = Gtk.ShortcutsSection()
+ section.show()
+
+ compose_group = Gtk.ShortcutsGroup(title="Composition modes")
+ compose_group.show()
+ for accel, desc in [("F1", "Select fullscreen mode"),
+ ("F2", "Select Picture in Picture mode"),
+ ("F3", "Select Side-by-Side Equal mode"),
+ ("F4", "Select Side-by-Side Preview mode")]:
+ short = Gtk.ShortcutsShortcut(title=desc, accelerator=accel)
+ short.show()
+ compose_group.add(short)
+ section.add(compose_group)
+
+ source_group = Gtk.ShortcutsGroup(title="Source Selection")
+ source_group.show()
+ num = len(Config.getlist('mix', 'sources'))
+ source_items = [
+ ("1...{}".format(num), "Select Source as A-Source"),
+ ("<ctrl>1...<ctrl>{}".format(num), "Select Source as B-Source"),
+ ("<alt>1...<alt>{}".format(num), "Select Source as Fullscreen")
+ ]
+ for accel, desc in source_items:
+ short = Gtk.ShortcutsShortcut(title=desc, accelerator=accel)
+ short.show()
+ source_group.add(short)
+ section.add(source_group)
+
+ if Config.getboolean('misc', 'cut'):
+ other_group = Gtk.ShortcutsGroup(title="Other")
+ other_group.show()
+ short = Gtk.ShortcutsShortcut(title="Send Cut message",
+ accelerator="t")
+ short.show()
+ other_group.add(short)
+ section.add(other_group)
+
+ self.add(section)
+
+
+def show_shortcuts(win):
+ if not hasattr(Gtk, "ShortcutsWindow"):
+ return
+ shortcuts_window = ShortcutsWindow(win)
+ shortcuts_window.show()