mirror of
https://github.com/283375/arcaea-offline-ocr-model.git
synced 2025-07-01 12:26:26 +00:00
init
This commit is contained in:
0
ui/__init__.py
Normal file
0
ui/__init__.py
Normal file
19
ui/components/logItemDetails.ui
Normal file
19
ui/components/logItemDetails.ui
Normal file
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>LogItemDetails</class>
|
||||
<widget class="QWidget" name="LogItemDetails">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>603</width>
|
||||
<height>469</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string notr="true">LogItemDetails</string>
|
||||
</property>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
35
ui/components/logItemDetails_ui.py
Normal file
35
ui/components/logItemDetails_ui.py
Normal file
@ -0,0 +1,35 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
################################################################################
|
||||
## Form generated from reading UI file 'logItemDetails.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, QSizePolicy, QWidget)
|
||||
|
||||
class Ui_LogItemDetails(object):
|
||||
def setupUi(self, LogItemDetails):
|
||||
if not LogItemDetails.objectName():
|
||||
LogItemDetails.setObjectName(u"LogItemDetails")
|
||||
LogItemDetails.resize(603, 469)
|
||||
LogItemDetails.setWindowTitle(u"LogItemDetails")
|
||||
|
||||
self.retranslateUi(LogItemDetails)
|
||||
|
||||
QMetaObject.connectSlotsByName(LogItemDetails)
|
||||
# setupUi
|
||||
|
||||
def retranslateUi(self, LogItemDetails):
|
||||
pass
|
||||
# retranslateUi
|
||||
|
94
ui/components/logViewer.ui
Normal file
94
ui/components/logViewer.ui
Normal file
@ -0,0 +1,94 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>LogViewer</class>
|
||||
<widget class="QWidget" name="LogViewer">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>597</width>
|
||||
<height>443</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string notr="true">LogViewer</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QFrame" name="frame">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout" columnstretch="0,1,0,0,1">
|
||||
<item row="0" column="3">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Group</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="4">
|
||||
<widget class="QComboBox" name="groupComboBox"/>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="levelLabel">
|
||||
<property name="text">
|
||||
<string>INFO</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QSlider" name="levelSlider">
|
||||
<property name="maximum">
|
||||
<number>5</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="pageStep">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="tracking">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="tickPosition">
|
||||
<enum>QSlider::TicksBelow</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Preferred</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>25</width>
|
||||
<height>10</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTreeView" name="logTreeView"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
88
ui/components/logViewer_ui.py
Normal file
88
ui/components/logViewer_ui.py
Normal file
@ -0,0 +1,88 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
################################################################################
|
||||
## Form generated from reading UI file 'logViewer.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, QComboBox, QFrame, QGridLayout,
|
||||
QHeaderView, QLabel, QSizePolicy, QSlider,
|
||||
QSpacerItem, QTreeView, QVBoxLayout, QWidget)
|
||||
|
||||
class Ui_LogViewer(object):
|
||||
def setupUi(self, LogViewer):
|
||||
if not LogViewer.objectName():
|
||||
LogViewer.setObjectName(u"LogViewer")
|
||||
LogViewer.resize(597, 443)
|
||||
LogViewer.setWindowTitle(u"LogViewer")
|
||||
self.verticalLayout = QVBoxLayout(LogViewer)
|
||||
self.verticalLayout.setObjectName(u"verticalLayout")
|
||||
self.frame = QFrame(LogViewer)
|
||||
self.frame.setObjectName(u"frame")
|
||||
self.frame.setFrameShape(QFrame.StyledPanel)
|
||||
self.frame.setFrameShadow(QFrame.Raised)
|
||||
self.gridLayout = QGridLayout(self.frame)
|
||||
self.gridLayout.setObjectName(u"gridLayout")
|
||||
self.label = QLabel(self.frame)
|
||||
self.label.setObjectName(u"label")
|
||||
|
||||
self.gridLayout.addWidget(self.label, 0, 3, 1, 1)
|
||||
|
||||
self.groupComboBox = QComboBox(self.frame)
|
||||
self.groupComboBox.setObjectName(u"groupComboBox")
|
||||
|
||||
self.gridLayout.addWidget(self.groupComboBox, 0, 4, 1, 1)
|
||||
|
||||
self.levelLabel = QLabel(self.frame)
|
||||
self.levelLabel.setObjectName(u"levelLabel")
|
||||
|
||||
self.gridLayout.addWidget(self.levelLabel, 0, 0, 1, 1)
|
||||
|
||||
self.levelSlider = QSlider(self.frame)
|
||||
self.levelSlider.setObjectName(u"levelSlider")
|
||||
self.levelSlider.setMaximum(5)
|
||||
self.levelSlider.setSingleStep(1)
|
||||
self.levelSlider.setPageStep(1)
|
||||
self.levelSlider.setValue(2)
|
||||
self.levelSlider.setTracking(True)
|
||||
self.levelSlider.setOrientation(Qt.Horizontal)
|
||||
self.levelSlider.setTickPosition(QSlider.TicksBelow)
|
||||
|
||||
self.gridLayout.addWidget(self.levelSlider, 0, 1, 1, 1)
|
||||
|
||||
self.horizontalSpacer = QSpacerItem(25, 10, QSizePolicy.Preferred, QSizePolicy.Minimum)
|
||||
|
||||
self.gridLayout.addItem(self.horizontalSpacer, 0, 2, 1, 1)
|
||||
|
||||
self.gridLayout.setColumnStretch(1, 1)
|
||||
self.gridLayout.setColumnStretch(4, 1)
|
||||
|
||||
self.verticalLayout.addWidget(self.frame)
|
||||
|
||||
self.logTreeView = QTreeView(LogViewer)
|
||||
self.logTreeView.setObjectName(u"logTreeView")
|
||||
|
||||
self.verticalLayout.addWidget(self.logTreeView)
|
||||
|
||||
|
||||
self.retranslateUi(LogViewer)
|
||||
|
||||
QMetaObject.connectSlotsByName(LogViewer)
|
||||
# setupUi
|
||||
|
||||
def retranslateUi(self, LogViewer):
|
||||
self.label.setText(QCoreApplication.translate("LogViewer", u"Group", None))
|
||||
self.levelLabel.setText(QCoreApplication.translate("LogViewer", u"INFO", None))
|
||||
pass
|
||||
# retranslateUi
|
||||
|
33
ui/components/projectEntry.py
Normal file
33
ui/components/projectEntry.py
Normal file
@ -0,0 +1,33 @@
|
||||
from PySide6.QtWidgets import QWidget
|
||||
|
||||
from project import Project
|
||||
|
||||
from .projectEntry_ui import Ui_ProjectEntry
|
||||
|
||||
|
||||
class ProjectEntry(Ui_ProjectEntry, QWidget):
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
self.setupUi(self)
|
||||
self.project = None
|
||||
|
||||
def setProject(self, project: Project):
|
||||
self.project = project
|
||||
self.updateLabels()
|
||||
|
||||
def updateLabels(self):
|
||||
if not self.project:
|
||||
self.projectNameLabel.setText("-")
|
||||
self.projectDescriptionLabel.setText("-")
|
||||
return
|
||||
|
||||
self.projectNameLabel.setText(self.project.name)
|
||||
self.projectDescriptionLabel.setText(
|
||||
"<br>".join(
|
||||
[
|
||||
str(self.project.path.resolve()),
|
||||
f"{len(self.project.sources)} sources",
|
||||
f"{len(self.project.samples)} samples ({len(self.project.samplesUnclassified)} unclassified)",
|
||||
]
|
||||
)
|
||||
)
|
116
ui/components/projectEntry.ui
Normal file
116
ui/components/projectEntry.ui
Normal file
@ -0,0 +1,116 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>ProjectEntry</class>
|
||||
<widget class="QWidget" name="ProjectEntry">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>605</width>
|
||||
<height>488</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>projectEntry</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="tabManage">
|
||||
<attribute name="title">
|
||||
<string>Manage</string>
|
||||
</attribute>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="2" column="0">
|
||||
<widget class="QPushButton" name="pushButton">
|
||||
<property name="text">
|
||||
<string>Extract</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="QLabel" name="projectNameLabel">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>14</pointsize>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>-</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QPushButton" name="pushButton_2">
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QLabel" name="projectDescriptionLabel">
|
||||
<property name="text">
|
||||
<string>-</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="2">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tabClassify">
|
||||
<attribute name="title">
|
||||
<string>Classify</string>
|
||||
</attribute>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="SamplesListWidget" name="unclassifiedListWidget"/>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QListWidget" name="tagsListWidget">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="SamplesListWidget" name="classfiedListWidget"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>SamplesListWidget</class>
|
||||
<extends>QListWidget</extends>
|
||||
<header>ui.components.samplesListWidget</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
117
ui/components/projectEntry_ui.py
Normal file
117
ui/components/projectEntry_ui.py
Normal file
@ -0,0 +1,117 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
################################################################################
|
||||
## Form generated from reading UI file 'projectEntry.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, QGridLayout, QHBoxLayout, QLabel,
|
||||
QListWidget, QListWidgetItem, QPushButton, QSizePolicy,
|
||||
QSpacerItem, QTabWidget, QVBoxLayout, QWidget)
|
||||
|
||||
from ui.components.samplesListWidget import SamplesListWidget
|
||||
|
||||
class Ui_ProjectEntry(object):
|
||||
def setupUi(self, ProjectEntry):
|
||||
if not ProjectEntry.objectName():
|
||||
ProjectEntry.setObjectName(u"ProjectEntry")
|
||||
ProjectEntry.resize(605, 488)
|
||||
self.verticalLayout = QVBoxLayout(ProjectEntry)
|
||||
self.verticalLayout.setObjectName(u"verticalLayout")
|
||||
self.tabWidget = QTabWidget(ProjectEntry)
|
||||
self.tabWidget.setObjectName(u"tabWidget")
|
||||
self.tabManage = QWidget()
|
||||
self.tabManage.setObjectName(u"tabManage")
|
||||
self.gridLayout = QGridLayout(self.tabManage)
|
||||
self.gridLayout.setObjectName(u"gridLayout")
|
||||
self.pushButton = QPushButton(self.tabManage)
|
||||
self.pushButton.setObjectName(u"pushButton")
|
||||
|
||||
self.gridLayout.addWidget(self.pushButton, 2, 0, 1, 1)
|
||||
|
||||
self.projectNameLabel = QLabel(self.tabManage)
|
||||
self.projectNameLabel.setObjectName(u"projectNameLabel")
|
||||
font = QFont()
|
||||
font.setPointSize(14)
|
||||
font.setBold(True)
|
||||
self.projectNameLabel.setFont(font)
|
||||
|
||||
self.gridLayout.addWidget(self.projectNameLabel, 0, 0, 1, 2)
|
||||
|
||||
self.pushButton_2 = QPushButton(self.tabManage)
|
||||
self.pushButton_2.setObjectName(u"pushButton_2")
|
||||
|
||||
self.gridLayout.addWidget(self.pushButton_2, 2, 1, 1, 1)
|
||||
|
||||
self.projectDescriptionLabel = QLabel(self.tabManage)
|
||||
self.projectDescriptionLabel.setObjectName(u"projectDescriptionLabel")
|
||||
|
||||
self.gridLayout.addWidget(self.projectDescriptionLabel, 1, 0, 1, 2)
|
||||
|
||||
self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
|
||||
|
||||
self.gridLayout.addItem(self.verticalSpacer, 3, 0, 1, 2)
|
||||
|
||||
self.tabWidget.addTab(self.tabManage, "")
|
||||
self.tabClassify = QWidget()
|
||||
self.tabClassify.setObjectName(u"tabClassify")
|
||||
self.horizontalLayout = QHBoxLayout(self.tabClassify)
|
||||
self.horizontalLayout.setObjectName(u"horizontalLayout")
|
||||
self.unclassifiedListWidget = SamplesListWidget(self.tabClassify)
|
||||
self.unclassifiedListWidget.setObjectName(u"unclassifiedListWidget")
|
||||
|
||||
self.horizontalLayout.addWidget(self.unclassifiedListWidget)
|
||||
|
||||
self.verticalLayout_2 = QVBoxLayout()
|
||||
self.verticalLayout_2.setObjectName(u"verticalLayout_2")
|
||||
self.tagsListWidget = QListWidget(self.tabClassify)
|
||||
self.tagsListWidget.setObjectName(u"tagsListWidget")
|
||||
sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.tagsListWidget.sizePolicy().hasHeightForWidth())
|
||||
self.tagsListWidget.setSizePolicy(sizePolicy)
|
||||
|
||||
self.verticalLayout_2.addWidget(self.tagsListWidget)
|
||||
|
||||
self.classfiedListWidget = SamplesListWidget(self.tabClassify)
|
||||
self.classfiedListWidget.setObjectName(u"classfiedListWidget")
|
||||
|
||||
self.verticalLayout_2.addWidget(self.classfiedListWidget)
|
||||
|
||||
|
||||
self.horizontalLayout.addLayout(self.verticalLayout_2)
|
||||
|
||||
self.tabWidget.addTab(self.tabClassify, "")
|
||||
|
||||
self.verticalLayout.addWidget(self.tabWidget)
|
||||
|
||||
|
||||
self.retranslateUi(ProjectEntry)
|
||||
|
||||
self.tabWidget.setCurrentIndex(0)
|
||||
|
||||
|
||||
QMetaObject.connectSlotsByName(ProjectEntry)
|
||||
# setupUi
|
||||
|
||||
def retranslateUi(self, ProjectEntry):
|
||||
ProjectEntry.setWindowTitle(QCoreApplication.translate("ProjectEntry", u"projectEntry", None))
|
||||
self.pushButton.setText(QCoreApplication.translate("ProjectEntry", u"Extract", None))
|
||||
self.projectNameLabel.setText(QCoreApplication.translate("ProjectEntry", u"-", None))
|
||||
self.pushButton_2.setText(QCoreApplication.translate("ProjectEntry", u"...", None))
|
||||
self.projectDescriptionLabel.setText(QCoreApplication.translate("ProjectEntry", u"-", None))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabManage), QCoreApplication.translate("ProjectEntry", u"Manage", None))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabClassify), QCoreApplication.translate("ProjectEntry", u"Classify", None))
|
||||
# retranslateUi
|
||||
|
6
ui/components/samplesListWidget.py
Normal file
6
ui/components/samplesListWidget.py
Normal file
@ -0,0 +1,6 @@
|
||||
from PySide6.QtWidgets import QListWidget
|
||||
|
||||
|
||||
class SamplesListWidget(QListWidget):
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
43
ui/mainWindow.py
Normal file
43
ui/mainWindow.py
Normal file
@ -0,0 +1,43 @@
|
||||
from PySide6.QtCore import Qt
|
||||
from PySide6.QtWidgets import QListWidgetItem, QMainWindow, QSizePolicy, QWidget
|
||||
|
||||
from .mainWindow_ui import Ui_MainWindow
|
||||
from .tabs.tabProjects import TabProjects
|
||||
|
||||
|
||||
class MainWindow(Ui_MainWindow, QMainWindow):
|
||||
TabWidgetTypeRole = Qt.ItemDataRole.UserRole + 10
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
self.setupUi(self)
|
||||
|
||||
self.tabsListWidget.itemClicked.connect(self.setItemSelected)
|
||||
self.tabsListWidget.currentItemChanged.connect(self.switchTab)
|
||||
|
||||
projectsItem = QListWidgetItem("Projects", self.tabsListWidget)
|
||||
projectsItem.setData(self.TabWidgetTypeRole, TabProjects)
|
||||
self.tabsListWidget.addItem(projectsItem)
|
||||
|
||||
self.tabsListWidget.setMaximumWidth(
|
||||
self.tabsListWidget.sizeHintForColumn(0) + 10
|
||||
)
|
||||
|
||||
self.tabsListWidget.setCurrentIndex(self.tabsListWidget.model().index(0, 0))
|
||||
|
||||
def setItemSelected(self, item: QListWidgetItem):
|
||||
item.setSelected(True)
|
||||
|
||||
def switchTab(self):
|
||||
item = self.tabsListWidget.currentItem()
|
||||
|
||||
tabWidgetType = item.data(self.TabWidgetTypeRole)
|
||||
tabWidget: QWidget = tabWidgetType(self)
|
||||
# tabWidget.setSizePolicy(
|
||||
# QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Preferred
|
||||
# )
|
||||
|
||||
self.centralWidget().layout().removeWidget(self.tabWidget)
|
||||
self.tabWidget.deleteLater()
|
||||
self.centralWidget().layout().addWidget(tabWidget)
|
||||
self.tabWidget = tabWidget
|
43
ui/mainWindow.ui
Normal file
43
ui/mainWindow.ui
Normal file
@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>MainWindow</class>
|
||||
<widget class="QMainWindow" name="MainWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>600</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>MainWindow</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QListWidget" name="tabsListWidget">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="tabWidget" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
60
ui/mainWindow_ui.py
Normal file
60
ui/mainWindow_ui.py
Normal file
@ -0,0 +1,60 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
################################################################################
|
||||
## Form generated from reading UI file 'mainWindow.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,
|
||||
QMainWindow, QSizePolicy, QWidget)
|
||||
|
||||
class Ui_MainWindow(object):
|
||||
def setupUi(self, MainWindow):
|
||||
if not MainWindow.objectName():
|
||||
MainWindow.setObjectName(u"MainWindow")
|
||||
MainWindow.resize(800, 600)
|
||||
self.centralwidget = QWidget(MainWindow)
|
||||
self.centralwidget.setObjectName(u"centralwidget")
|
||||
self.horizontalLayout = QHBoxLayout(self.centralwidget)
|
||||
self.horizontalLayout.setObjectName(u"horizontalLayout")
|
||||
self.tabsListWidget = QListWidget(self.centralwidget)
|
||||
self.tabsListWidget.setObjectName(u"tabsListWidget")
|
||||
sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Expanding)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.tabsListWidget.sizePolicy().hasHeightForWidth())
|
||||
self.tabsListWidget.setSizePolicy(sizePolicy)
|
||||
|
||||
self.horizontalLayout.addWidget(self.tabsListWidget)
|
||||
|
||||
self.tabWidget = QWidget(self.centralwidget)
|
||||
self.tabWidget.setObjectName(u"tabWidget")
|
||||
sizePolicy1 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
|
||||
sizePolicy1.setHorizontalStretch(0)
|
||||
sizePolicy1.setVerticalStretch(0)
|
||||
sizePolicy1.setHeightForWidth(self.tabWidget.sizePolicy().hasHeightForWidth())
|
||||
self.tabWidget.setSizePolicy(sizePolicy1)
|
||||
|
||||
self.horizontalLayout.addWidget(self.tabWidget)
|
||||
|
||||
MainWindow.setCentralWidget(self.centralwidget)
|
||||
|
||||
self.retranslateUi(MainWindow)
|
||||
|
||||
QMetaObject.connectSlotsByName(MainWindow)
|
||||
# setupUi
|
||||
|
||||
def retranslateUi(self, MainWindow):
|
||||
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
|
||||
# retranslateUi
|
||||
|
53
ui/tabs/tabProjects.py
Normal file
53
ui/tabs/tabProjects.py
Normal 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
41
ui/tabs/tabProjects.ui
Normal 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
58
ui/tabs/tabProjects_ui.py
Normal 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
|
||||
|
Reference in New Issue
Block a user