This commit is contained in:
2023-09-13 03:40:02 +08:00
commit e84f2bec81
20 changed files with 1205 additions and 0 deletions

53
ui/tabs/tabProjects.py Normal file
View File

@ -0,0 +1,53 @@
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QListWidgetItem, QWidget
from project import Project, Projects
from ..components.projectEntry import ProjectEntry
from .tabProjects_ui import Ui_TabProjects
class ProjectListWidgetItem(QListWidgetItem):
ProjectRole = Qt.ItemDataRole.UserRole
def __init__(self, project: Project, parent=None):
super().__init__(parent, QListWidgetItem.ItemType.Type)
self.setData(Qt.ItemDataRole.DisplayRole, project.name)
self.setData(self.ProjectRole, project)
class TabProjects(Ui_TabProjects, QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setupUi(self)
self.projectListWidget.itemClicked.connect(
self.projectListWidget.setCurrentItem
)
self.projectListWidget.currentItemChanged.connect(self.switchProject)
self.detectProjects()
def detectProjects(self):
ps = Projects()
ps.detectProjects()
projects = ps.projects
for project in projects:
item = ProjectListWidgetItem(project, self.projectListWidget)
self.projectListWidget.addItem(item)
self.projectListWidget.setMaximumWidth(
self.projectListWidget.sizeHintForColumn(0) + 10
)
def switchProject(self):
item = self.projectListWidget.currentItem()
project: Project = item.data(ProjectListWidgetItem.ProjectRole)
projectEntry = ProjectEntry(self)
projectEntry.setProject(project)
self.layout().removeWidget(self.projectEntry)
self.projectEntry.deleteLater()
self.layout().addWidget(projectEntry)
self.projectEntry = projectEntry

41
ui/tabs/tabProjects.ui Normal file
View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TabProjects</class>
<widget class="QWidget" name="TabProjects">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>701</width>
<height>582</height>
</rect>
</property>
<property name="windowTitle">
<string notr="true">TabProjects</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QListWidget" name="projectListWidget">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="projectEntry" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

58
ui/tabs/tabProjects_ui.py Normal file
View File

@ -0,0 +1,58 @@
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file 'tabProjects.ui'
##
## Created by: Qt User Interface Compiler version 6.5.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
QMetaObject, QObject, QPoint, QRect,
QSize, QTime, QUrl, Qt)
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
QFont, QFontDatabase, QGradient, QIcon,
QImage, QKeySequence, QLinearGradient, QPainter,
QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QHBoxLayout, QListWidget, QListWidgetItem,
QSizePolicy, QWidget)
class Ui_TabProjects(object):
def setupUi(self, TabProjects):
if not TabProjects.objectName():
TabProjects.setObjectName(u"TabProjects")
TabProjects.resize(701, 582)
TabProjects.setWindowTitle(u"TabProjects")
self.horizontalLayout = QHBoxLayout(TabProjects)
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.projectListWidget = QListWidget(TabProjects)
self.projectListWidget.setObjectName(u"projectListWidget")
sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.projectListWidget.sizePolicy().hasHeightForWidth())
self.projectListWidget.setSizePolicy(sizePolicy)
self.horizontalLayout.addWidget(self.projectListWidget)
self.projectEntry = QWidget(TabProjects)
self.projectEntry.setObjectName(u"projectEntry")
sizePolicy1 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
sizePolicy1.setHorizontalStretch(0)
sizePolicy1.setVerticalStretch(0)
sizePolicy1.setHeightForWidth(self.projectEntry.sizePolicy().hasHeightForWidth())
self.projectEntry.setSizePolicy(sizePolicy1)
self.horizontalLayout.addWidget(self.projectEntry)
self.retranslateUi(TabProjects)
QMetaObject.connectSlotsByName(TabProjects)
# setupUi
def retranslateUi(self, TabProjects):
pass
# retranslateUi