Toolbox for analyzing and editing pkg application files for psp,ps3, ps4 and ps5, includes the most useful functions you might need.
| 1 | from PyQt5.QtWidgets import QTreeWidget, QTreeWidgetItem |
| 2 | from PyQt5.QtCore import Qt |
| 3 | |
| 4 | class 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 |