69 lines
1.5 KiB
Python
69 lines
1.5 KiB
Python
# -*- encoding: utf-8 -*-
|
|
|
|
import os
|
|
import datetime
|
|
|
|
from PyQt6.QtCore import Qt
|
|
from PyQt6.QtWidgets import (
|
|
QDockWidget, QTabWidget, QTreeWidget, QTreeWidgetItem,
|
|
)
|
|
from PyQt6.QtGui import (
|
|
QFont, QIcon,
|
|
)
|
|
|
|
from config import config
|
|
|
|
font = QFont("consolas", 14)
|
|
font.setFamilies(["consolas", "黑体"])
|
|
|
|
class tree_item(QTreeWidgetItem):
|
|
def __init__(self, data, *arg, **kwarg):
|
|
super().__init__(*arg, **kwarg)
|
|
self.data = data
|
|
|
|
class tree_widget(QTreeWidget):
|
|
def __init__(self, window, *arg, **kwarg):
|
|
super().__init__(*arg, **kwarg)
|
|
self.window = window
|
|
|
|
self.setColumnCount(1)
|
|
self.setHeaderLabels(["项目"])
|
|
|
|
if "tree" in config:
|
|
config_tree = config["tree"]
|
|
|
|
def search(node, config):
|
|
for child in config:
|
|
id = child["id"]
|
|
label = child["label"]
|
|
data = {
|
|
"id": id,
|
|
}
|
|
item = tree_item(data, [label])
|
|
node.addChild(item)
|
|
if "child" in child:
|
|
search(item, child["child"])
|
|
|
|
search(self, config_tree)
|
|
|
|
self.itemClicked.connect(self.on_item_clicked)
|
|
|
|
def addChild(self, item):
|
|
return super().addTopLevelItem(item)
|
|
|
|
def on_item_clicked(self, item, column):
|
|
self.window.widget_display.load_project(item.data["id"])
|
|
|
|
class widget_tree(QDockWidget):
|
|
|
|
def __init__(self, window, *arg, **kwarg):
|
|
super().__init__(*arg, **kwarg)
|
|
self.window = window
|
|
|
|
self.setAllowedAreas(Qt.DockWidgetArea.LeftDockWidgetArea | Qt.DockWidgetArea.RightDockWidgetArea)
|
|
self.setFont(font)
|
|
|
|
self.tree_widget = tree_widget(window)
|
|
self.setWidget(self.tree_widget)
|
|
|