Skip to content

Commit

Permalink
Client Improvement
Browse files Browse the repository at this point in the history
1. [GUI] Adjust config sections of each tool page to be more readable
2. [GUI] Add option to reset parameter settings on start up
3. [GUI] Complement the params management buttons of TTS tool page
4. [GUI] Fix suffix missing issue of manifest and add suffix info to the model-managing table
5. [GUI] Widget library update (see details in 'QSimpleWidget' repo)
  • Loading branch information
Spr-Aachen committed May 18, 2024
1 parent d42587a commit ccdcd1b
Show file tree
Hide file tree
Showing 5 changed files with 559 additions and 414 deletions.
73 changes: 41 additions & 32 deletions EVT_GUI/Components.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ def setStyleSheet(self, StyleSheet: str):
)

def AddRow(self, Param: tuple):
ModelName, ModelType, ModelSize, ModelDate, DownloadParam = Param

RowHeight = 36
LabelStyle = '''
QLabel {
Expand All @@ -80,59 +82,66 @@ def SetColumnLayout(ColumnLayout):
ColumnLayout.setContentsMargins(0, 0, 0, 0)
ColumnLayout.setSpacing(0)

Label0 = QLabel()
Label0.setStyleSheet(LabelStyle)
Function_SetText(Label0, Param[0])
Column0Layout = QHBoxLayout()
SetColumnLayout(Column0Layout)
Column0Layout.addWidget(Label0)

Label1 = QLabel()
Label1.setStyleSheet(LabelStyle)
Function_SetText(Label1, Param[1])
Column1Layout = QHBoxLayout()
SetColumnLayout(Column1Layout)
Column1Layout.addWidget(Label1)

Label2 = QLabel()
Label2.setStyleSheet(LabelStyle)
Function_SetText(Label2, Param[2])
Column2Layout = QHBoxLayout()
SetColumnLayout(Column2Layout)
Column2Layout.addWidget(Label2)
Label_ModelName = QLabel()
Label_ModelName.setStyleSheet(LabelStyle)
Function_SetText(Label_ModelName, ModelName)
ColumnLayout_ModelName = QHBoxLayout()
SetColumnLayout(ColumnLayout_ModelName)
ColumnLayout_ModelName.addWidget(Label_ModelName)

Label_ModelType = QLabel()
Label_ModelType.setStyleSheet(LabelStyle)
Function_SetText(Label_ModelType, ModelType)
ColumnLayout_ModelType = QHBoxLayout()
SetColumnLayout(ColumnLayout_ModelType)
ColumnLayout_ModelType.addWidget(Label_ModelType)

Label_ModelSize = QLabel()
Label_ModelSize.setStyleSheet(LabelStyle)
Function_SetText(Label_ModelSize, ModelSize)
ColumnLayout_ModelSize = QHBoxLayout()
SetColumnLayout(ColumnLayout_ModelSize)
ColumnLayout_ModelSize.addWidget(Label_ModelSize)

Label_ModelDate = QLabel()
Label_ModelDate.setStyleSheet(LabelStyle)
Function_SetText(Label_ModelDate, ModelDate)
ColumnLayout_ModelDate = QHBoxLayout()
SetColumnLayout(ColumnLayout_ModelDate)
ColumnLayout_ModelDate.addWidget(Label_ModelDate)

StackedWidget = QStackedWidget()
StackedWidget.setContentsMargins(0, 0, 0, 0)
OpenButton = QPushButton()
OpenButton.setStyleSheet(ButtonStyle + "QPushButton {image: url(:/Button_Icon/Sources/OpenedFolder.png);}")
OpenButton.clicked.connect(lambda: Function_OpenURL(Param[3] if isinstance(Param[3], str) else Param[3][1]))
OpenButton.clicked.connect(lambda: Function_OpenURL(DownloadParam if isinstance(DownloadParam, str) else DownloadParam[1]))
DownloadButton = QPushButton()
DownloadButton.setStyleSheet(ButtonStyle + "QPushButton {image: url(:/Button_Icon/Sources/Download.png);}")
DownloadButton.clicked.connect(lambda: self.Download.emit(Param[3]) if isinstance(Param[3], tuple) else None)
DownloadButton.clicked.connect(lambda: self.Download.emit(DownloadParam) if isinstance(DownloadParam, tuple) else None)
DownloadButton.clicked.connect(lambda: StackedWidget.setCurrentWidget(OpenButton))
StackedWidget.addWidget(OpenButton)
StackedWidget.addWidget(DownloadButton)
StackedWidget.setCurrentWidget(OpenButton) if isinstance(Param[3], str) else StackedWidget.setCurrentWidget(DownloadButton)
StackedWidget.setCurrentWidget(OpenButton) if isinstance(DownloadParam, str) else StackedWidget.setCurrentWidget(DownloadButton)
CopyButton = QPushButton()
CopyButton.setStyleSheet(ButtonStyle + "QPushButton {image: url(:/Button_Icon/Sources/Clipboard.png);}")
CopyButton.clicked.connect(lambda: self.Clipboard.setText(Param[3][0]) if isinstance(Param[3], tuple) else None)
CopyButton.clicked.connect(lambda: self.Clipboard.setText(DownloadParam[0]) if isinstance(DownloadParam, tuple) else None)
CopyButton.clicked.connect(lambda: Function_ShowMessageBox(WindowTitle = "Tip", Text = "已复制链接到剪切板"))
Function_SetRetainSizeWhenHidden(CopyButton)
CopyButton.hide() if StackedWidget.currentWidget() == OpenButton else None
StackedWidget.currentChanged.connect(lambda: CopyButton.hide() if StackedWidget.currentWidget() == OpenButton else None)
Column3Layout = QHBoxLayout()
SetColumnLayout(Column3Layout)
Column3Layout.addWidget(StackedWidget)
Column3Layout.addWidget(CopyButton)
ColumnLayout_Management = QHBoxLayout()
SetColumnLayout(ColumnLayout_Management)
ColumnLayout_Management.addWidget(StackedWidget)
ColumnLayout_Management.addWidget(CopyButton)

super().AddRow(
[Column0Layout, Column1Layout, Column2Layout, Column3Layout],
[QHeaderView.Stretch, QHeaderView.Stretch, QHeaderView.Stretch, QHeaderView.Fixed],
[None, None, None, 2 * RowHeight],
[ColumnLayout_ModelName, ColumnLayout_ModelType, ColumnLayout_ModelSize, ColumnLayout_ModelDate, ColumnLayout_Management],
[QHeaderView.Stretch, QHeaderView.Interactive, QHeaderView.Interactive, QHeaderView.Stretch, QHeaderView.Fixed],
[None, None, None, None, 2 * RowHeight],
RowHeight
)

def SetValue(self, Params: list = [['', '', '', 'url'], ]):
def SetValue(self, Params: list = [['name', 'type', 'size', 'date', 'url'], ]):
self.ClearRows()
for Param in Params:
QApplication.processEvents()
Expand Down
52 changes: 43 additions & 9 deletions EVT_GUI/Functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -479,22 +479,51 @@ def Function_SetWidgetValue(
):
if isinstance(Widget, (QLineEdit, LineEditBase, QPlainTextEdit)):
Function_SetText(Widget, Value, SetPlaceholderText = SetPlaceholderText, PlaceholderText = PlaceholderText)
Widget.textChanged.connect(lambda Value: Config.EditConfig(Section, Option, str(Value)))
def EditConfig(Value):
Config.EditConfig(Section, Option, str(Value))
if Config is not None:
Widget.textChanged.connect(EditConfig)
EditConfig(Value)

if isinstance(Widget, QComboBox):
Widget.setCurrentText(str(Value))
Widget.currentTextChanged.connect(lambda Value: Config.EditConfig(Section, Option, str(Value)))
def EditConfig(Value):
Config.EditConfig(Section, Option, str(Value))
if Config is not None:
Widget.currentTextChanged.connect(EditConfig)
EditConfig(Value)

if isinstance(Widget, (QSlider, QSpinBox)):
Widget.setValue(int(eval(str(Value)) * Times))
Widget.valueChanged.connect(lambda Value: Config.EditConfig(Section, Option, str(eval(str(Value)) / Times)))
def EditConfig(Value):
Config.EditConfig(Section, Option, str(eval(str(Value)) / Times))
if Config is not None:
Widget.valueChanged.connect(EditConfig)
EditConfig(Value)

if isinstance(Widget, QDoubleSpinBox):
Widget.setValue(float(eval(str(Value)) * Times))
Widget.valueChanged.connect(lambda Value: Config.EditConfig(Section, Option, str(eval(str(Value)) / Times)))
def EditConfig(Value):
Config.EditConfig(Section, Option, str(eval(str(Value)) / Times))
if Config is not None:
Widget.valueChanged.connect(EditConfig)
EditConfig(Value)

if isinstance(Widget, (QCheckBox, QRadioButton)):
Widget.setChecked(eval(str(Value)))
Widget.toggled.connect(lambda Value: Config.EditConfig(Section, Option, str(Value)))
def EditConfig(Value):
Config.EditConfig(Section, Option, str(Value))
if Config is not None:
Widget.toggled.connect(EditConfig)
EditConfig(Value)

if isinstance(Widget, Table_EditAudioSpeaker):
Widget.SetValue(eval(str(Value)))
Widget.ValueChanged.connect(lambda Value: Config.EditConfig(Section, Option, str(Value)))
def EditConfig(Value):
Config.EditConfig(Section, Option, str(Value))
if Config is not None:
Widget.ValueChanged.connect(EditConfig)
EditConfig(Value)


class ParamsManager:
Expand Down Expand Up @@ -527,20 +556,25 @@ def ResetParam(self, Widget: QWidget):
value = self.RegistratedWidgets[Widget]
Function_SetWidgetValue(Widget, self.Config, *value)

def ClearSettings(self):
with open(self.ConfigPath, 'w') as Config:
pass
self.Config = ManageConfig(self.ConfigPath)

def ResetSettings(self):
self.ClearSettings()
for Widget in list(self.RegistratedWidgets.keys()):
self.ResetParam(Widget)

def ImportSettings(self, ReadPath: str):
ConfigParser = ManageConfig(ReadPath).ReadConfig()
ConfigParser = ManageConfig(ReadPath).Parser()
with open(self.ConfigPath, 'w') as Config:
ConfigParser.write(Config)
for Widget, value in list(self.RegistratedWidgets.items()):
self.SetParam(Widget, *value)

def ExportSettings(self, SavePath: str):
ConfigParser = self.Config.ReadConfig()
with open(SavePath, 'w') as Config:
ConfigParser.write(Config)
self.Config.Parser().write(Config)

##############################################################################################################################
Loading

0 comments on commit ccdcd1b

Please sign in to comment.