diff --git a/soitool/modules/module_table.py b/soitool/modules/module_table.py index e9d06a7502c15d4d859c0173eb39ccc7de5dd481..e4c3b981987256a6fb919d23e21b687bf71120f9 100644 --- a/soitool/modules/module_table.py +++ b/soitool/modules/module_table.py @@ -58,7 +58,31 @@ class TableModule(ModuleBase, QTableWidget, metaclass=Meta): self.cellChanged.connect(self.resize) - self.set_shortcuts() + def keyPressEvent(self, event): + """Launch actions when specific combinations of keys are pressed. + + If the keys pressed are not related to a shortcut on this custom widget + the event is sent on to be handled by the superclass (for navigation + with arrow-keys for.eg.) + + The combinations used below work on Thomas' machine, but are not + guaranteed to work on all machines. This needs to be checked. + + Paramters + --------- + event : QKeyEvent + event sent by Qt for us to handle + """ + if event.key() == QtCore.Qt.Key_Question: + self.add_column() + elif event.modifiers() == QtCore.Qt.ShiftModifier and event.key() == QtCore.Qt.Key_Underscore: + self.remove_column() + elif event.modifiers() == QtCore.Qt.ControlModifier and event.key() == QtCore.Qt.Key_Plus: + self.add_row() + elif event.modifiers() == QtCore.Qt.ControlModifier and event.key() == QtCore.Qt.Key_Underscore: + self.remove_row() + else: + super(TableModule, self).keyPressEvent(event) def set_header_item(self, column, text): """Insert item with header-style. @@ -77,20 +101,6 @@ class TableModule(ModuleBase, QTableWidget, metaclass=Meta): item.setFont(HEADER_FONT) self.setItem(0, column, item) - def set_shortcuts(self): - """Set shortcuts for adding and removing rows and columns.""" - # Create shortcuts - shortcut_add_col = QShortcut(QtGui.QKeySequence("Shift++"), self) - shortcut_rem_col = QShortcut(QtGui.QKeySequence("Shift+-"), self) - shortcut_add_row = QShortcut(QtGui.QKeySequence("Ctrl++"), self) - shortcut_rem_row = QShortcut(QtGui.QKeySequence("Ctrl+-"), self) - - # Connect shortcuts to functions - shortcut_add_col.activated.connect(self.add_column) - shortcut_rem_col.activated.connect(self.remove_column) - shortcut_add_row.activated.connect(self.add_row) - shortcut_rem_row.activated.connect(self.remove_row) - def add_column(self): """Add column to the right of selected column.""" self.insertColumn(self.currentColumn() + 1)