From ca9bd357a309be15d2df7d67f19540fd36c00466 Mon Sep 17 00:00:00 2001 From: alcexhim Date: Wed, 23 Jul 2014 00:28:56 -0400 Subject: [PATCH] Start to add support for keyboard accelerators, IDK how to do this... --- .../UniversalEditor.Engines.GTK/MainWindow.cs | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/CSharp/Engines/GTK/UniversalEditor.Engines.GTK/MainWindow.cs b/CSharp/Engines/GTK/UniversalEditor.Engines.GTK/MainWindow.cs index 54badf6c..9fa7d5c1 100644 --- a/CSharp/Engines/GTK/UniversalEditor.Engines.GTK/MainWindow.cs +++ b/CSharp/Engines/GTK/UniversalEditor.Engines.GTK/MainWindow.cs @@ -75,6 +75,39 @@ namespace UniversalEditor.Engines.GTK } menubar1.ShowAll (); } + + private Gdk.Key AccelKeyFromCommandShortcutKey (CommandShortcutKey shortcutKey) + { + AccelKey ak = new AccelKey(); + switch (shortcutKey.Value) + { + case CommandShortcutKeyValue.A: ak.Key = Gdk.Key.A; break; + case CommandShortcutKeyValue.B: ak.Key = Gdk.Key.B; break; + } + if (((shortcutKey.Modifiers & CommandShortcutKeyModifiers.Alt) == CommandShortcutKeyModifiers.Alt) + || ((shortcutKey.Modifiers & CommandShortcutKeyModifiers.Meta) == CommandShortcutKeyModifiers.Meta)) + { + ak.AccelMods |= Gdk.ModifierType.MetaMask; + } + if ((shortcutKey.Modifiers & CommandShortcutKeyModifiers.Control) == CommandShortcutKeyModifiers.Control) + { + ak.AccelMods |= Gdk.ModifierType.ControlMask; + } + if ((shortcutKey.Modifiers & CommandShortcutKeyModifiers.Shift) == CommandShortcutKeyModifiers.Shift) + { + ak.AccelMods |= Gdk.ModifierType.ShiftMask; + } + if ((shortcutKey.Modifiers & CommandShortcutKeyModifiers.Super) == CommandShortcutKeyModifiers.Super) + { + ak.AccelMods |= Gdk.ModifierType.SuperMask; + } + if ((shortcutKey.Modifiers & CommandShortcutKeyModifiers.Hyper) == CommandShortcutKeyModifiers.Hyper) + { + ak.AccelMods |= Gdk.ModifierType.HyperMask; + } + return ak; + } + private void CreateCommandItem(CommandItem item, Menu parentMenu) { Gtk.MenuItem menuItem = null; @@ -90,6 +123,7 @@ namespace UniversalEditor.Engines.GTK } menuItem = new Gtk.MenuItem(cmd.Title); + menuItem.AddAccelerator("signal", new AccelGroup(), AccelKeyFromCommandShortcutKey(cmd.ShortcutKey)); if (cmd.Items.Count > 0) { Menu submenu = CreateCommandItemSubmenu(cmd);