5 |
5 |
6 """ |
6 """ |
7 Module implementing specialized tree views. |
7 Module implementing specialized tree views. |
8 """ |
8 """ |
9 |
9 |
|
10 import enum |
|
11 |
10 from PyQt5.QtCore import pyqtSignal, Qt |
12 from PyQt5.QtCore import pyqtSignal, Qt |
11 from PyQt5.QtWidgets import QTreeWidget, QTreeWidgetItem, QAbstractItemView |
13 from PyQt5.QtWidgets import QTreeWidget, QTreeWidgetItem, QAbstractItemView |
|
14 |
|
15 |
|
16 class E5TreeWidgetItemsState(enum.Enum): |
|
17 """ |
|
18 Class defining the items expansion state. |
|
19 """ |
|
20 COLLAPSED = 0 |
|
21 EXPANDED = 1 |
12 |
22 |
13 |
23 |
14 class E5TreeWidget(QTreeWidget): |
24 class E5TreeWidget(QTreeWidget): |
15 """ |
25 """ |
16 Class implementing an extended tree widget. |
26 Class implementing an extended tree widget. |
18 @signal itemControlClicked(QTreeWidgetItem) emitted after a Ctrl-Click |
28 @signal itemControlClicked(QTreeWidgetItem) emitted after a Ctrl-Click |
19 on an item |
29 on an item |
20 @signal itemMiddleButtonClicked(QTreeWidgetItem) emitted after a click |
30 @signal itemMiddleButtonClicked(QTreeWidgetItem) emitted after a click |
21 of the middle button on an item |
31 of the middle button on an item |
22 """ |
32 """ |
23 ItemsCollapsed = 0 |
|
24 ItemsExpanded = 1 |
|
25 |
|
26 itemControlClicked = pyqtSignal(QTreeWidgetItem) |
33 itemControlClicked = pyqtSignal(QTreeWidgetItem) |
27 itemMiddleButtonClicked = pyqtSignal(QTreeWidgetItem) |
34 itemMiddleButtonClicked = pyqtSignal(QTreeWidgetItem) |
28 |
35 |
29 def __init__(self, parent=None): |
36 def __init__(self, parent=None): |
30 """ |
37 """ |
34 """ |
41 """ |
35 super().__init__(parent) |
42 super().__init__(parent) |
36 |
43 |
37 self.__refreshAllItemsNeeded = True |
44 self.__refreshAllItemsNeeded = True |
38 self.__allTreeItems = [] |
45 self.__allTreeItems = [] |
39 self.__showMode = E5TreeWidget.ItemsCollapsed |
46 self.__showMode = E5TreeWidgetItemsState.COLLAPSED |
40 |
47 |
41 self.setVerticalScrollMode(QAbstractItemView.ScrollMode.ScrollPerPixel) |
48 self.setVerticalScrollMode(QAbstractItemView.ScrollMode.ScrollPerPixel) |
42 |
49 |
43 self.itemChanged.connect(self.__scheduleRefresh) |
50 self.itemChanged.connect(self.__scheduleRefresh) |
44 |
51 |
45 def setDefaultItemShowMode(self, mode): |
52 def setDefaultItemShowMode(self, mode): |
46 """ |
53 """ |
47 Public method to set the default item show mode. |
54 Public method to set the default item show mode. |
48 |
55 |
49 @param mode default mode (ItemsCollapsed, ItemsExpanded) |
56 @param mode default mode |
50 @exception ValueError raised to indicate a bad parameter value |
57 @type E5TreeWidgetItemsState |
51 """ |
58 """ |
52 if mode not in [E5TreeWidget.ItemsCollapsed, |
|
53 E5TreeWidget.ItemsExpanded]: |
|
54 raise ValueError("Bad value for 'mode' parameter.") |
|
55 |
|
56 self.__showMode = mode |
59 self.__showMode = mode |
57 |
60 |
58 def allItems(self): |
61 def allItems(self): |
59 """ |
62 """ |
60 Public method to get a list of all items. |
63 Public method to get a list of all items. |