src/eric7/EricWidgets/EricListSelectionDialog.py

Sat, 23 Dec 2023 15:48:12 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 23 Dec 2023 15:48:12 +0100
branch
eric7
changeset 10439
21c28b0f9e41
parent 10215
d476667171a1
child 11090
f5f5f5803935
permissions
-rw-r--r--

Updated copyright for 2024.

5244
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
10439
21c28b0f9e41 Updated copyright for 2024.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10215
diff changeset
3 # Copyright (c) 2016 - 2024 Detlev Offenbach <detlev@die-offenbachs.de>
5244
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog to select from a list of strings.
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
10 from PyQt6.QtCore import Qt, pyqtSlot
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
11 from PyQt6.QtWidgets import (
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
12 QAbstractItemView,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13 QDialog,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14 QDialogButtonBox,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15 QListWidgetItem,
7252
c5e3705073eb Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
16 )
5244
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
18 from .Ui_EricListSelectionDialog import Ui_EricListSelectionDialog
5244
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
21 class EricListSelectionDialog(QDialog, Ui_EricListSelectionDialog):
5244
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 """
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 Class implementing a dialog to select from a list of strings.
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
25
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
26 def __init__(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
27 self,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
28 entries,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
29 selectionMode=QAbstractItemView.SelectionMode.ExtendedSelection,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
30 title="",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
31 message="",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
32 checkBoxSelection=False,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
33 doubleClickOk=False,
10215
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
34 emptySelectionOk=False,
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
35 showSelectAll=False,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
36 parent=None,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
37 ):
5244
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 """
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
40
5244
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @param entries list of entries to select from
10215
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
42 @type list of str or list of tuple of (str, Any)
5244
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 @param selectionMode selection mode for the list
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 @type QAbstractItemView.SelectionMode
8038
73ec029d4107 MicroPython: improved the support for "BBC micro:bit" and "Calliope mini".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
45 @param title title of the dialog
5244
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 @type str
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 @param message message to be show in the dialog
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 @type str
6437
3dd851d1edf8 E5ListSelectionDialog: added a selection mode for items to be selected via a checkbox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
49 @param checkBoxSelection flag indicating to select items via their
3dd851d1edf8 E5ListSelectionDialog: added a selection mode for items to be selected via a checkbox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
50 checkbox
3dd851d1edf8 E5ListSelectionDialog: added a selection mode for items to be selected via a checkbox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
51 @type bool
8670
12e7fbf2445a Added a double click instant selection to the Eric List Selection Dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
52 @param doubleClickOk flag indicating to accept the dialog upon a
12e7fbf2445a Added a double click instant selection to the Eric List Selection Dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
53 double click of an item (single selection only)
12e7fbf2445a Added a double click instant selection to the Eric List Selection Dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
54 @type bool
10215
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
55 @param emptySelectionOk flag indicating that an empty selection is allowed
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
56 @type bool
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
57 @param showSelectAll flag indicating to show a 'Select All' button
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
58 @type bool
5244
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 @param parent reference to the parent widget
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 @type QWidget
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
62 super().__init__(parent)
5244
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 self.setupUi(self)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
64
5244
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 if title:
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 self.setWindowTitle(title)
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 if message:
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 self.messageLabel.setText(message)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
69
6437
3dd851d1edf8 E5ListSelectionDialog: added a selection mode for items to be selected via a checkbox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
70 self.__checkCount = 0
3dd851d1edf8 E5ListSelectionDialog: added a selection mode for items to be selected via a checkbox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
71 self.__isCheckBoxSelection = checkBoxSelection
10215
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
72 self.__doubleClickOk = doubleClickOk
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
73 self.__emptySelectionOk = emptySelectionOk
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
74
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
75 self.selectionList.setSelectionMode(
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
76 QAbstractItemView.SelectionMode.NoSelection
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
77 if self.__isCheckBoxSelection
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
78 else selectionMode
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
79 )
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
80
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
81 for entry in entries:
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
82 if isinstance(entry, tuple):
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
83 itm = QListWidgetItem(entry[0])
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
84 itm.setData(Qt.ItemDataRole.UserRole, entry[1])
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
85 else:
6437
3dd851d1edf8 E5ListSelectionDialog: added a selection mode for items to be selected via a checkbox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
86 itm = QListWidgetItem(entry)
10215
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
87 if self.__isCheckBoxSelection:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
88 itm.setFlags(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
89 Qt.ItemFlag.ItemIsUserCheckable | Qt.ItemFlag.ItemIsEnabled
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
90 )
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
91 itm.setCheckState(Qt.CheckState.Unchecked)
10215
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
92 self.selectionList.addItem(itm)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
93
10215
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
94 if showSelectAll:
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
95 self.buttonBox.addButton(
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
96 self.tr("Deselect All"), QDialogButtonBox.ButtonRole.ActionRole
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
97 ).clicked.connect(lambda: self.__selectAll(False))
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
98 self.buttonBox.addButton(
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
99 self.tr("Select All"), QDialogButtonBox.ButtonRole.ActionRole
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
100 ).clicked.connect(lambda: self.__selectAll(True))
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
101
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
102 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
103 emptySelectionOk
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
104 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
105
5244
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 @pyqtSlot()
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 def on_selectionList_itemSelectionChanged(self):
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 """
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 Private slot handling a change of the selection.
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 """
6437
3dd851d1edf8 E5ListSelectionDialog: added a selection mode for items to be selected via a checkbox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
111 if not self.__isCheckBoxSelection:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
112 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(
10215
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
113 len(self.selectionList.selectedItems()) > 0 or self.__emptySelectionOk
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
114 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
115
10215
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
116 @pyqtSlot(QListWidgetItem)
6437
3dd851d1edf8 E5ListSelectionDialog: added a selection mode for items to be selected via a checkbox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
117 def on_selectionList_itemChanged(self, itm):
3dd851d1edf8 E5ListSelectionDialog: added a selection mode for items to be selected via a checkbox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
118 """
3dd851d1edf8 E5ListSelectionDialog: added a selection mode for items to be selected via a checkbox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
119 Private slot handling a change of an item.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
120
6437
3dd851d1edf8 E5ListSelectionDialog: added a selection mode for items to be selected via a checkbox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
121 @param itm reference to the changed item
3dd851d1edf8 E5ListSelectionDialog: added a selection mode for items to be selected via a checkbox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
122 @type QListWidgetItem
3dd851d1edf8 E5ListSelectionDialog: added a selection mode for items to be selected via a checkbox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
123 """
3dd851d1edf8 E5ListSelectionDialog: added a selection mode for items to be selected via a checkbox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
124 if self.__isCheckBoxSelection:
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
125 if itm.checkState() == Qt.CheckState.Checked:
6437
3dd851d1edf8 E5ListSelectionDialog: added a selection mode for items to be selected via a checkbox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
126 self.__checkCount += 1
9768
e2b622afb5ff Fixed an issue causing the selection count of checkable selection lists going negative.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
127 elif self.__checkCount > 0:
6437
3dd851d1edf8 E5ListSelectionDialog: added a selection mode for items to be selected via a checkbox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
128 self.__checkCount -= 1
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
129 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(
10215
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
130 self.__checkCount > 0 or self.__emptySelectionOk
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
131 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
132
8670
12e7fbf2445a Added a double click instant selection to the Eric List Selection Dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
133 @pyqtSlot(QListWidgetItem)
12e7fbf2445a Added a double click instant selection to the Eric List Selection Dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
134 def on_selectionList_itemDoubleClicked(self, item):
12e7fbf2445a Added a double click instant selection to the Eric List Selection Dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
135 """
12e7fbf2445a Added a double click instant selection to the Eric List Selection Dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
136 Private slot handling double clicking an item.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
137
8670
12e7fbf2445a Added a double click instant selection to the Eric List Selection Dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
138 @param item double clicked item
12e7fbf2445a Added a double click instant selection to the Eric List Selection Dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
139 @type QListWidgetItem
12e7fbf2445a Added a double click instant selection to the Eric List Selection Dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
140 """
12e7fbf2445a Added a double click instant selection to the Eric List Selection Dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
141 if (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
142 not self.__isCheckBoxSelection
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
143 and self.selectionList.selectionMode()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
144 == QAbstractItemView.SelectionMode.SingleSelection
10215
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
145 and self.__doubleClickOk
8670
12e7fbf2445a Added a double click instant selection to the Eric List Selection Dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
146 ):
12e7fbf2445a Added a double click instant selection to the Eric List Selection Dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
147 self.accept()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
148
10215
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
149 def __selectAll(self, state):
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
150 """
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
151 Private method to select or deselect all entries.
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
152
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
153 @param state flag indicating the desired selection state
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
154 @type bool
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
155 """
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
156 for row in range(self.selectionList.count()):
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
157 item = self.selectionList.item(row)
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
158 if self.__isCheckBoxSelection:
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
159 if state:
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
160 item.setCheckState(Qt.CheckState.Checked)
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
161 else:
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
162 item.setCheckState(Qt.CheckState.Unchecked)
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
163 else:
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
164 item.setSelected(state)
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
165
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
166 def setSelection(self, selection):
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
167 """
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
168 Public method to preselect a list of entries.
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
169
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
170 @param selection list of selected entries
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
171 @type list of str
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
172 """
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
173 for name in selection:
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
174 itemList = self.selectionList.findItems(
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
175 name, Qt.MatchFlag.MatchCaseSensitive | Qt.MatchFlag.MatchStartsWith
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
176 )
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
177 if itemList:
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
178 if self.__isCheckBoxSelection:
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
179 itemList[0].setCheckState(Qt.CheckState.Checked)
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
180 else:
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
181 itemList[0].setSelected(True)
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
182
5244
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 def getSelection(self):
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 """
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 Public method to retrieve the selected items.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
186
5244
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 @return selected entries
10215
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
188 @rtype list of str or list of tuple of (str, Any)
5244
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 """
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 entries = []
6437
3dd851d1edf8 E5ListSelectionDialog: added a selection mode for items to be selected via a checkbox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
191 if self.__isCheckBoxSelection:
3dd851d1edf8 E5ListSelectionDialog: added a selection mode for items to be selected via a checkbox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
192 for row in range(self.selectionList.count()):
3dd851d1edf8 E5ListSelectionDialog: added a selection mode for items to be selected via a checkbox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
193 item = self.selectionList.item(row)
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
194 if item.checkState() == Qt.CheckState.Checked:
10215
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
195 data = item.data(Qt.ItemDataRole.UserRole)
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
196 if data is None:
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
197 entries.append(item.text())
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
198 else:
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
199 entries.append((item.text(), data))
6437
3dd851d1edf8 E5ListSelectionDialog: added a selection mode for items to be selected via a checkbox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
200 else:
3dd851d1edf8 E5ListSelectionDialog: added a selection mode for items to be selected via a checkbox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
201 for item in self.selectionList.selectedItems():
10215
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
202 data = item.data(Qt.ItemDataRole.UserRole)
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
203 if data is None:
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
204 entries.append(item.text())
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
205 else:
d476667171a1 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9768
diff changeset
206 entries.append((item.text(), data))
5244
54a0f215a6f0 Added a dialog to select from a list and extended the plug-in archive build process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 return entries

eric ide

mercurial