From 4308e88dd57de7e3c0514bb40767417a014f1c2d Mon Sep 17 00:00:00 2001 From: Dominik Demuth Date: Fri, 7 Apr 2023 14:45:33 +0200 Subject: [PATCH] simultaneous change of check states in list widgets; fixes #32 --- .gitignore | 1 + src/gui_qt/_py/eval_expr_dialog.py | 14 ++++++++------ src/gui_qt/lib/listwidget.py | 16 ++++++++++++++++ src/resources/_ui/eval_expr_dialog.ui | 11 ++++++++--- 4 files changed, 33 insertions(+), 9 deletions(-) create mode 100644 src/gui_qt/lib/listwidget.py diff --git a/.gitignore b/.gitignore index 3a30800..581e7b2 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ AppDir NMReval*.zsync .idea *.zs-old +docs diff --git a/src/gui_qt/_py/eval_expr_dialog.py b/src/gui_qt/_py/eval_expr_dialog.py index d70a5ed..5bda16f 100644 --- a/src/gui_qt/_py/eval_expr_dialog.py +++ b/src/gui_qt/_py/eval_expr_dialog.py @@ -1,10 +1,11 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file 'resources/_ui/eval_expr_dialog.ui' +# Form implementation generated from reading ui file 'src/resources/_ui/eval_expr_dialog.ui' # -# Created by: PyQt5 UI code generator 5.12.3 +# Created by: PyQt5 UI code generator 5.15.9 # -# WARNING! All changes made in this file will be lost! +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. from PyQt5 import QtCore, QtGui, QtWidgets @@ -36,14 +37,14 @@ class Ui_CalcDialog(object): self.label_2 = QtWidgets.QLabel(self.page) self.label_2.setObjectName("label_2") self.verticalLayout_2.addWidget(self.label_2) - self.listWidget = QtWidgets.QListWidget(self.page) + self.listWidget = QListWidgetSelect(self.page) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.MinimumExpanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.listWidget.sizePolicy().hasHeightForWidth()) self.listWidget.setSizePolicy(sizePolicy) self.listWidget.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) - self.listWidget.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection) + self.listWidget.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) self.listWidget.setObjectName("listWidget") self.verticalLayout_2.addWidget(self.listWidget) self.overwrite_checkbox = QtWidgets.QCheckBox(self.page) @@ -202,7 +203,7 @@ class Ui_CalcDialog(object): self.label_8.setBuddy(self.line_doubleSpinBox) self.retranslateUi(CalcDialog) - self.stackedWidget.setCurrentIndex(2) + self.stackedWidget.setCurrentIndex(0) QtCore.QMetaObject.connectSlotsByName(CalcDialog) CalcDialog.setTabOrder(self.calc_edit, self.listWidget) CalcDialog.setTabOrder(self.listWidget, self.overwrite_checkbox) @@ -237,4 +238,5 @@ class Ui_CalcDialog(object): self.label_11.setText(_translate("CalcDialog", "Style")) self.label.setText(_translate("CalcDialog", "Expressions are evaluated line by line and change previous values")) from ..lib.delegates import ColorListEditor, LineStyleEditor, SymbolStyleEditor +from ..lib.listwidget import QListWidgetSelect from ..lib.namespace import QNamespaceWidget diff --git a/src/gui_qt/lib/listwidget.py b/src/gui_qt/lib/listwidget.py new file mode 100644 index 0000000..c4128da --- /dev/null +++ b/src/gui_qt/lib/listwidget.py @@ -0,0 +1,16 @@ +from ..Qt import QtWidgets, QtGui, QtCore + + +class QListWidgetSelect(QtWidgets.QListWidget): + def __init__(self, parent=None): + super().__init__(parent=parent) + + def keyPressEvent(self, evt: QtGui.QKeyEvent): + if evt.key() == QtCore.Qt.Key.Key_Space: + for idx in self.selectedIndexes(): + item = self.itemFromIndex(idx) + cs = item.checkState() + item.setCheckState(QtCore.Qt.CheckState.Unchecked if cs == QtCore.Qt.CheckState.Checked + else QtCore.Qt.CheckState.Checked) + else: + super().keyPressEvent(evt) diff --git a/src/resources/_ui/eval_expr_dialog.ui b/src/resources/_ui/eval_expr_dialog.ui index c3f7791..c483d3f 100644 --- a/src/resources/_ui/eval_expr_dialog.ui +++ b/src/resources/_ui/eval_expr_dialog.ui @@ -27,7 +27,7 @@ - 2 + 0 @@ -54,7 +54,7 @@ - + 0 @@ -65,7 +65,7 @@ QAbstractItemView::NoEditTriggers - QAbstractItemView::SingleSelection + QAbstractItemView::ExtendedSelection @@ -414,6 +414,11 @@
..lib.namespace
1 + + QListWidgetSelect + QListWidget +
..lib.listwidget
+
calc_edit