From d84c7eafe2f368166dbf02e04343e59691536d0a Mon Sep 17 00:00:00 2001 From: falkTX Date: Sun, 8 Feb 2015 01:05:09 +0000 Subject: [PATCH] Tweaks to carla-vst; Make menu shortcuts work --- source/native-plugins/resources/carla-plugin | 57 +++++++++++++++++--- 1 file changed, 50 insertions(+), 7 deletions(-) diff --git a/source/native-plugins/resources/carla-plugin b/source/native-plugins/resources/carla-plugin index 7b9c8dc25..b34a02c12 100755 --- a/source/native-plugins/resources/carla-plugin +++ b/source/native-plugins/resources/carla-plugin @@ -373,7 +373,7 @@ class CarlaMiniW(ExternalUI, HostWindow): # Embed plugin UI if LINUX and not config_UseQt5: - from PyQt4.QtGui import QHBoxLayout, QX11EmbedWidget + from PyQt4.QtGui import QHBoxLayout, QKeySequence, QX11EmbedWidget class CarlaEmbedW(QX11EmbedWidget): def __init__(self, host, winId): @@ -391,21 +391,37 @@ if LINUX and not config_UseQt5: gui.hide() gui.ui.act_file_quit.setEnabled(False) - gui.ui.menu_File.setEnabled(False) - gui.ui.menu_File.setVisible(False) - #menuBar = gui.menuBar() - #menuBar.removeAction(gui.ui.menu_File.menuAction()) + gui.ui.act_file_quit.setVisible(False) - self.addWidget(gui.menuBar()) + self.fShortcutActions = [] + self.addShortcutActions(gui.ui.menu_File.actions()) + self.addShortcutActions(gui.ui.menu_Plugin.actions()) + self.addShortcutActions(gui.ui.menu_PluginMacros.actions()) + self.addShortcutActions(gui.ui.menu_Settings.actions()) + self.addShortcutActions(gui.ui.menu_Help.actions()) + + if self.host.processMode == ENGINE_PROCESS_MODE_PATCHBAY: + self.addShortcutActions(gui.ui.menu_Canvas.actions()) + self.addShortcutActions(gui.ui.menu_Canvas_Zoom.actions()) + + self.addWidget(gui.ui.menubar) self.addLine() self.addWidget(gui.ui.toolBar) - self.addLine() + + if self.host.processMode == ENGINE_PROCESS_MODE_PATCHBAY: + self.addLine() + self.addWidget(gui.centralWidget()) self.setFixedSize(740, 512) self.embedInto(winId) self.show() + def addShortcutActions(self, actions): + for action in actions: + if not action.shortcut().isEmpty(): + self.fShortcutActions.append(action) + def addWidget(self, widget): widget.setParent(self) self.fLayout.addWidget(widget) @@ -418,6 +434,33 @@ if LINUX and not config_UseQt5: line.setMidLineWidth(1) self.fLayout.addWidget(line) + def keyPressEvent(self, event): + modifiers = event.modifiers() + modifiersStr = "" + + if (modifiers & Qt.ShiftModifier): + modifiersStr += "Shift+" + if (modifiers & Qt.ControlModifier): + modifiersStr += "Ctrl+" + if (modifiers & Qt.AltModifier): + modifiersStr += "Alt+" + if (modifiers & Qt.MetaModifier): + modifiersStr += "Meta+" + + keyStr = QKeySequence(event.key()).toString() + keySeq = QKeySequence(modifiersStr + keyStr) + + for action in self.fShortcutActions: + if not action.isEnabled(): + continue + if keySeq.matches(action.shortcut()) != QKeySequence.ExactMatch: + continue + event.accept() + action.trigger() + return + + QX11EmbedWidget.keyPressEvent(self, event) + def showEvent(self, event): QX11EmbedWidget.showEvent(self, event)