diff --git a/soitool/modules/module_base.py b/soitool/modules/module_base.py index 1d6f055d20dd0a418317e7a77d3e140540159b2d..99812778078ad7fd0521e23ae557e71a2c9f1e12 100644 --- a/soitool/modules/module_base.py +++ b/soitool/modules/module_base.py @@ -1,6 +1,7 @@ """Base/interface of each module.""" from abc import ABC from PySide2 import QtGui +from PySide2.QtCore import Qt # Font for module headline HEADLINE_FONT = QtGui.QFont() @@ -118,3 +119,57 @@ def set_module_pos(widget, pos): Position (x, y). """ widget.move(pos) + + +def event_is_ctrl_plus(event): + """Check if the event is 'CTRL +'. + + Parameters + ---------- + event : QKeyEvent + Event to check. + """ + return ( + event.modifiers() == Qt.ControlModifier and event.key() == Qt.Key_Plus + ) + + +def event_is_ctrl_minus(event): + """Check if the event is 'CTRL -'. + + Parameters + ---------- + event : QKeyEvent + Event to check. + """ + # Underline is in practice minus in this situation. We don't know why + return ( + event.modifiers() == Qt.ControlModifier + and event.key() == Qt.Key_Underscore + ) + + +def event_is_shift_plus(event): + """Check if the event is 'SHIFT +'. + + Parameters + ---------- + event : QKeyEvent + Event to check. + """ + return event.key() == Qt.Key_Question + + +def event_is_shift_minus(event): + """Check if the event is 'SHIFT -'. + + Parameters + ---------- + event : QKeyEvent + Event to check. + """ + # Underline is in practice minus in this situation. We don't know why + return ( + event.modifiers() == Qt.ShiftModifier + and event.key() == Qt.Key_Underscore + ) diff --git a/soitool/modules/module_code_phrase.py b/soitool/modules/module_code_phrase.py index 5349e1a2883a09e0b9edecdcfb4295f099791db6..098490c49ea2efd9eac8f9a65320290aee09e03d 100644 --- a/soitool/modules/module_code_phrase.py +++ b/soitool/modules/module_code_phrase.py @@ -7,12 +7,13 @@ from PySide2.QtWidgets import ( QWidget, QVBoxLayout, ) -from PySide2 import QtCore from PySide2.QtCore import Qt from PySide2.QtGui import QIcon from soitool.modules.module_base import ( ModuleBase, HEADLINE_FONT, + event_is_ctrl_plus, + event_is_ctrl_minus, ) from soitool.modules.fit_to_contents_widgets import ( TableWithSizeOfContent, @@ -162,7 +163,7 @@ class CodePhraseModule(ModuleBase, QWidget, metaclass=Meta): """ item = QTableWidgetItem(code) item.setFlags(item.flags() ^ Qt.ItemIsEditable) - self.table.setItem(self.table.currentRow() + 1, CODE_COLUMN, item) + self.table.setItem(row, CODE_COLUMN, item) def set_phrase_table_item(self, row, phrase): """Set phrase at row. @@ -175,7 +176,7 @@ class CodePhraseModule(ModuleBase, QWidget, metaclass=Meta): Phrase to set. """ item = QTableWidgetItem(phrase) - self.table.setItem(self.table.currentRow() + 1, PHRASE_COLUMN, item) + self.table.setItem(row, PHRASE_COLUMN, item) def remove_row(self): """Remove selected row. @@ -199,15 +200,9 @@ class CodePhraseModule(ModuleBase, QWidget, metaclass=Meta): event : QKeyEvent event sent by Qt for us to handle """ - if ( - event.modifiers() == QtCore.Qt.ControlModifier - and event.key() == QtCore.Qt.Key_Plus - ): + if event_is_ctrl_plus(event): self.add_row() - elif ( - event.modifiers() == QtCore.Qt.ControlModifier - and event.key() == QtCore.Qt.Key_Underscore # In practice minus - ): + elif event_is_ctrl_minus(event): self.remove_row() def get_category(self): diff --git a/soitool/modules/module_table.py b/soitool/modules/module_table.py index 43bef7fb8d9e3ca625877c9ae7dfae4705b3dd93..1a11e85ab5b7ab74a654556d472a33032ce5fb62 100644 --- a/soitool/modules/module_table.py +++ b/soitool/modules/module_table.py @@ -6,6 +6,10 @@ from soitool.modules.module_base import ( resize_table, get_table_size, HEADLINE_FONT, + event_is_shift_plus, + event_is_shift_minus, + event_is_ctrl_plus, + event_is_ctrl_minus, ) START_ROWS = 2 @@ -88,22 +92,13 @@ class TableModule(ModuleBase, QTableWidget, metaclass=Meta): event : QKeyEvent event sent by Qt for us to handle """ - if event.key() == QtCore.Qt.Key_Question: + if event_is_shift_plus(event): self.add_column() - elif ( - event.modifiers() == QtCore.Qt.ShiftModifier - and event.key() == QtCore.Qt.Key_Underscore - ): + elif event_is_shift_minus(event): self.remove_column() - elif ( - event.modifiers() == QtCore.Qt.ControlModifier - and event.key() == QtCore.Qt.Key_Plus - ): + elif event_is_ctrl_plus(event): self.add_row() - elif ( - event.modifiers() == QtCore.Qt.ControlModifier - and event.key() == QtCore.Qt.Key_Underscore - ): + elif event_is_ctrl_minus(event): self.remove_row() else: super(TableModule, self).keyPressEvent(event)