From 372782fdf7cb213d9668b68ef654554fcc77ae56 Mon Sep 17 00:00:00 2001 From: thomahl <thomahl@stud.ntnu.no> Date: Fri, 24 Apr 2020 20:46:46 +0200 Subject: [PATCH] =?UTF-8?q?#98=20frittst=C3=A5ende=20funksjon=20for=20?= =?UTF-8?q?=C3=A5=20sjekke=20ctrl=20/=20shift=20+=20/=20-?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit gjort pga klager på kode-duplisering --- soitool/modules/module_base.py | 55 +++++++++++++++++++++++++++ soitool/modules/module_code_phrase.py | 17 +++------ soitool/modules/module_table.py | 21 ++++------ 3 files changed, 69 insertions(+), 24 deletions(-) diff --git a/soitool/modules/module_base.py b/soitool/modules/module_base.py index 1d6f055..9981277 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 5349e1a..098490c 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 43bef7f..1a11e85 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) -- GitLab