Seregon/PkgToolBox

Toolbox for analyzing and editing pkg application files for psp,ps3, ps4 and ps5, includes the most useful functions you might need.

Python/57.3 KB/No license
GraphicUserInterface/widgets/custom_tree.py
1from PyQt5.QtWidgets import QTreeWidget, QTreeWidgetItem
2from PyQt5.QtCore import Qt
3 
4class CustomTreeWidget(QTreeWidget):
5 def __init__(self, parent=None):
6 super().__init__(parent)
7 self.setup_ui()
8
9 def setup_ui(self):
10 """Setup the custom tree widget"""
11 # Set basic properties
12 self.setAlternatingRowColors(True)
13 self.setAnimated(True)
14 self.setIndentation(20)
15 self.setSortingEnabled(True)
16 self.setExpandsOnDoubleClick(True)
17
18 # Style
19 self.setStyleSheet("""
20 QTreeWidget {
21 border: 1px solid #bdc3c7;
22 border-radius: 5px;
23 padding: 5px;
24 }
25 QTreeWidget::item {
26 padding: 5px;
27 border-bottom: 1px solid #ecf0f1;
28 }
29 QTreeWidget::item:hover {
30 background-color: #e8f0fe;
31 }
32 QTreeWidget::item:selected {
33 background-color: #3498db;
34 color: white;
35 }
36 QTreeWidget::branch:has-siblings:!adjoins-item {
37 border-image: url(vline.png) 0;
38 }
39 QTreeWidget::branch:has-siblings:adjoins-item {
40 border-image: url(branch-more.png) 0;
41 }
42 QTreeWidget::branch:!has-children:!has-siblings:adjoins-item {
43 border-image: url(branch-end.png) 0;
44 }
45 """)
46 
47 def add_root_item(self, text, data=None):
48 """Add a root level item"""
49 item = QTreeWidgetItem(self)
50 item.setText(0, text)
51 if data:
52 item.setData(0, Qt.UserRole, data)
53 return item
54 
55 def add_child_item(self, parent, text, data=None):
56 """Add a child item to parent"""
57 item = QTreeWidgetItem(parent)
58 item.setText(0, text)
59 if data:
60 item.setData(0, Qt.UserRole, data)
61 return item
62 
63 def get_selected_data(self):
64 """Get data from selected item"""
65 selected = self.selectedItems()
66 if selected:
67 return selected[0].data(0, Qt.UserRole)
68 return None