mirror of
https://github.com/Anjok07/ultimatevocalremovergui.git
synced 2024-11-27 17:00:59 +01:00
Commit
This commit is contained in:
parent
43af31d1b2
commit
6ed512e6d0
@ -30,10 +30,11 @@ JSON_TO_NAME = OrderedDict(**{
|
||||
# Number
|
||||
'aggressiveness': 'doubleSpinBox_aggressiveness',
|
||||
'highEndProcess': 'comboBox_highEndProcess',
|
||||
'windowSize': 'comboBox_winSize',
|
||||
# -Models-
|
||||
'ensemble': 'checkBox_ensemble',
|
||||
'instrumentalModelName': 'comboBox_instrumental',
|
||||
'vocalModelName': 'comboBox_vocal',
|
||||
'windowSize': 'comboBox_winSize',
|
||||
})
|
||||
DEFAULT_SETTINGS = {
|
||||
# --Independent Data (Data not directly connected with widgets)--
|
||||
@ -54,11 +55,12 @@ DEFAULT_SETTINGS = {
|
||||
'outputImage': True,
|
||||
'modelFolder': True,
|
||||
'deepExtraction': True,
|
||||
'windowSize': 1024,
|
||||
# Number
|
||||
'aggressiveness': 0.1,
|
||||
'highEndProcess': 'Bypass',
|
||||
# -Models-
|
||||
'windowSize': 1024,
|
||||
'ensemble': True,
|
||||
}],
|
||||
['NONE', {
|
||||
# -Conversion-
|
||||
@ -68,11 +70,12 @@ DEFAULT_SETTINGS = {
|
||||
'outputImage': False,
|
||||
'modelFolder': False,
|
||||
'deepExtraction': False,
|
||||
'windowSize': 352,
|
||||
# Number
|
||||
'aggressiveness': -0.1,
|
||||
'highEndProcess': 'Mirroring',
|
||||
# -Models-
|
||||
'windowSize': 352,
|
||||
'ensemble': False,
|
||||
}]
|
||||
],
|
||||
# Presets save directory (Default: desktop)
|
||||
|
107
src/resources/models/modelmanager.py
Normal file
107
src/resources/models/modelmanager.py
Normal file
@ -0,0 +1,107 @@
|
||||
"""
|
||||
Class for managing models
|
||||
"""
|
||||
# pylint: disable=no-name-in-module, import-error
|
||||
# -GUI-
|
||||
from typing import Dict
|
||||
from PySide2 import QtWidgets
|
||||
from PySide2 import QtCore
|
||||
from PySide2 import QtGui
|
||||
from PySide2.QtGui import Qt
|
||||
# -Root imports-
|
||||
# None
|
||||
# -Other-
|
||||
import hashlib
|
||||
# System
|
||||
import os
|
||||
import sys
|
||||
|
||||
# Get the absolute path to this file
|
||||
if getattr(sys, 'frozen', False):
|
||||
# If the application is run as a bundle, the PyInstaller bootloader
|
||||
# extends the sys module by a flag frozen=True and sets the app
|
||||
# path into variable _MEIPASS'.
|
||||
main_path = os.path.dirname(sys.executable)
|
||||
abs_path = os.path.join(main_path, 'models')
|
||||
else:
|
||||
abs_path = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
|
||||
MODEL_TYPES = [
|
||||
"Instrumental",
|
||||
"Vocal",
|
||||
"Karaoke",
|
||||
"Custom"
|
||||
]
|
||||
|
||||
|
||||
class Model:
|
||||
def __init__(self, model_type: str, path: str):
|
||||
self.type = model_type
|
||||
self.path = path
|
||||
self.id = self.get_model_id(path)
|
||||
|
||||
@staticmethod
|
||||
def get_model_id(path: str) -> str:
|
||||
buffer_size = 65536
|
||||
sha1 = hashlib.sha1()
|
||||
|
||||
with open(path, 'rb') as f:
|
||||
while True:
|
||||
data = f.read(buffer_size)
|
||||
if not data:
|
||||
break
|
||||
sha1.update(data)
|
||||
|
||||
return sha1.hexdigest()
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"Model(type:{self.type},"
|
||||
|
||||
|
||||
class ModelManager:
|
||||
|
||||
def __init__(self):
|
||||
self.model_dirs = {}
|
||||
self.available_models = {}
|
||||
self._callback = None
|
||||
self.create_model_folders()
|
||||
|
||||
def search_for_models(self, force_callback: bool = False):
|
||||
"""Search for the models in each model type folder"""
|
||||
new_available_models = {}
|
||||
|
||||
for model_type, model_dir in self.model_dirs.items():
|
||||
for index, f in enumerate(os.listdir(model_dir)):
|
||||
if not f.endswith('.pth'):
|
||||
# File is not a model file, so skip
|
||||
continue
|
||||
# Get data
|
||||
path = os.path.join(model_dir, f)
|
||||
new_available_models[model_type] = Model(model_type, path)
|
||||
|
||||
if (new_available_models != self.available_models or
|
||||
force_callback):
|
||||
self.available_models = new_available_models
|
||||
if self._callback is not None:
|
||||
self._callback()
|
||||
else:
|
||||
self.available_models = new_available_models
|
||||
|
||||
def set_callback(self, callback):
|
||||
"""Set a callback function that will be called
|
||||
when the avaiable models have changed
|
||||
|
||||
Args:
|
||||
callback (function): Callback funtion
|
||||
"""
|
||||
self._callback = callback
|
||||
|
||||
def create_model_folders(self):
|
||||
"""Create the folders for each model type"""
|
||||
self.model_dirs.clear()
|
||||
for model in MODEL_TYPES:
|
||||
model_dir = os.path.join(abs_path, model)
|
||||
if not os.path.isdir(model_dir):
|
||||
os.mkdir(model_dir)
|
||||
self.model_dirs[model] = model_dir
|
@ -1,24 +1,24 @@
|
||||
[settingswindow]
|
||||
size=@Size(1028 551)
|
||||
pos=@Point(585 245)
|
||||
size=@Size(941 550)
|
||||
pos=@Point(274 296)
|
||||
checkBox_gpuConversion=false
|
||||
checkBox_tta=false
|
||||
checkBox_modelFolder=false
|
||||
checkBox_outputImage=false
|
||||
checkBox_postProcess=false
|
||||
checkBox_deepExtraction=false
|
||||
comboBox_winSize=352
|
||||
comboBox_highEndProcess=Mirroring
|
||||
doubleSpinBox_aggressiveness=-0.1
|
||||
checkBox_tta=true
|
||||
checkBox_modelFolder=true
|
||||
checkBox_outputImage=true
|
||||
checkBox_postProcess=true
|
||||
checkBox_deepExtraction=true
|
||||
comboBox_winSize=1024
|
||||
comboBox_highEndProcess=Bypass
|
||||
doubleSpinBox_aggressiveness=0.1
|
||||
checkBox_ensemble=false
|
||||
comboBox_instrumental=MGM-v5-2Band-32000-BETA1 - Kopie
|
||||
comboBox_instrumental=
|
||||
comboBox_vocal=
|
||||
comboBox_presets=NONE
|
||||
comboBox_presets=Custom
|
||||
checkBox_notifiyOnFinish=false
|
||||
checkBox_notifyUpdates=true
|
||||
checkBox_settingsStartup=false
|
||||
checkBox_settingsStartup=true
|
||||
checkBox_enableAnimations=true
|
||||
checkBox_showInfoButtons=false
|
||||
checkBox_showInfoButtons=true
|
||||
checkBox_multithreading=false
|
||||
comboBox_command=Off
|
||||
checkBox_autoSaveInstrumentals=true
|
||||
@ -29,17 +29,12 @@ exportDirectory=C:/Users/boska/Desktop
|
||||
language=en
|
||||
inputPaths=@Invalid()
|
||||
inputsDirectory=C:/Users/boska/Desktop
|
||||
presets=@Variant(\0\0\0\x7f\0\0\0\x18PySide::PyObjectWrapper\0\0\0\0\xc3\x80\x3X\x3\0\0\0\x41LLq\0}q\x1(X\xe\0\0\0\x61ggressivenessq\x2G?\xb9\x99\x99\x99\x99\x99\x9aX\xe\0\0\0\x64\x65\x65pExtractionq\x3\x88X\xe\0\0\0highEndProcessq\x4X\x6\0\0\0\x42ypassq\x5X\v\0\0\0modelFolderq\x6\x88X\v\0\0\0outputImageq\a\x88X\v\0\0\0postProcessq\b\x88X\x3\0\0\0ttaq\t\x88X\n\0\0\0windowSizeq\nM\0\x4u\x86q\v.), @Variant(\0\0\0\x7f\0\0\0\x18PySide::PyObjectWrapper\0\0\0\0\xc7\x80\x3X\x4\0\0\0NONEq\0}q\x1(X\xe\0\0\0\x61ggressivenessq\x2G\xbf\xb9\x99\x99\x99\x99\x99\x9aX\xe\0\0\0\x64\x65\x65pExtractionq\x3\x89X\xe\0\0\0highEndProcessq\x4X\t\0\0\0Mirroringq\x5X\v\0\0\0modelFolderq\x6\x89X\v\0\0\0outputImageq\a\x89X\v\0\0\0postProcessq\b\x89X\x3\0\0\0ttaq\t\x89X\n\0\0\0windowSizeq\nM`\x1u\x86q\v.)
|
||||
presets=@Variant(\0\0\0\x7f\0\0\0\x18PySide::PyObjectWrapper\0\0\0\0\xd3\x80\x3X\x3\0\0\0\x41LLq\0}q\x1(X\xe\0\0\0\x61ggressivenessq\x2G?\xb9\x99\x99\x99\x99\x99\x9aX\xe\0\0\0\x64\x65\x65pExtractionq\x3\x88X\b\0\0\0\x65nsembleq\x4\x88X\xe\0\0\0highEndProcessq\x5X\x6\0\0\0\x42ypassq\x6X\v\0\0\0modelFolderq\a\x88X\v\0\0\0outputImageq\b\x88X\v\0\0\0postProcessq\t\x88X\x3\0\0\0ttaq\n\x88X\n\0\0\0windowSizeq\vM\0\x4u\x86q\f.), @Variant(\0\0\0\x7f\0\0\0\x18PySide::PyObjectWrapper\0\0\0\0\xd7\x80\x3X\x4\0\0\0NONEq\0}q\x1(X\xe\0\0\0\x61ggressivenessq\x2G\xbf\xb9\x99\x99\x99\x99\x99\x9aX\xe\0\0\0\x64\x65\x65pExtractionq\x3\x89X\b\0\0\0\x65nsembleq\x4\x89X\xe\0\0\0highEndProcessq\x5X\t\0\0\0Mirroringq\x6X\v\0\0\0modelFolderq\a\x89X\v\0\0\0outputImageq\b\x89X\v\0\0\0postProcessq\t\x89X\x3\0\0\0ttaq\n\x89X\n\0\0\0windowSizeq\vM`\x1u\x86q\f.)
|
||||
presets_loadDir=C:/Users/boska/Desktop
|
||||
presets_saveDir=C:/Users/boska/Desktop
|
||||
theme=dark
|
||||
|
||||
[mainwindow]
|
||||
size=@Size(906 559)
|
||||
pos=@Point(503 220)
|
||||
isMaximized=false
|
||||
|
||||
[infowindow]
|
||||
size=@Size(596 440)
|
||||
pos=@Point(662 204)
|
||||
pos=@Point(507 260)
|
||||
isMaximized=false
|
||||
|
@ -3,15 +3,14 @@ Translator Class File
|
||||
"""
|
||||
# pylint: disable=no-name-in-module, import-error
|
||||
# -GUI-
|
||||
from typing import DefaultDict, Dict
|
||||
from PySide2 import QtWidgets
|
||||
from PySide2 import QtCore
|
||||
from PySide2 import QtGui
|
||||
import PySide2
|
||||
from PySide2.QtGui import Qt
|
||||
# -Root imports-
|
||||
# None
|
||||
# -Other-
|
||||
from typing import DefaultDict, Dict
|
||||
# System
|
||||
import os
|
||||
import sys
|
||||
|
@ -18,7 +18,7 @@ class Ui_SettingsWindow(object):
|
||||
if not SettingsWindow.objectName():
|
||||
SettingsWindow.setObjectName(u"SettingsWindow")
|
||||
SettingsWindow.setEnabled(True)
|
||||
SettingsWindow.resize(941, 551)
|
||||
SettingsWindow.resize(941, 550)
|
||||
SettingsWindow.setStyleSheet(u"")
|
||||
self.horizontalLayout = QHBoxLayout(SettingsWindow)
|
||||
self.horizontalLayout.setSpacing(0)
|
||||
@ -134,7 +134,7 @@ class Ui_SettingsWindow(object):
|
||||
self.scrollAreaWidgetContents_2 = QWidget()
|
||||
self.scrollAreaWidgetContents_2.setObjectName(
|
||||
u"scrollAreaWidgetContents_2")
|
||||
self.scrollAreaWidgetContents_2.setGeometry(QRect(0, 0, 741, 551))
|
||||
self.scrollAreaWidgetContents_2.setGeometry(QRect(0, 0, 741, 550))
|
||||
sizePolicy2 = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred)
|
||||
sizePolicy2.setHorizontalStretch(0)
|
||||
sizePolicy2.setVerticalStretch(0)
|
||||
@ -164,7 +164,7 @@ class Ui_SettingsWindow(object):
|
||||
self.horizontalFrame_1 = QFrame(self.frame_3)
|
||||
self.horizontalFrame_1.setObjectName(u"horizontalFrame_1")
|
||||
self.horizontalLayout_4 = QHBoxLayout(self.horizontalFrame_1)
|
||||
self.horizontalLayout_4.setSpacing(45)
|
||||
self.horizontalLayout_4.setSpacing(35)
|
||||
self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
|
||||
self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0)
|
||||
self.frame_template_3 = QFrame(self.horizontalFrame_1)
|
||||
@ -572,25 +572,46 @@ class Ui_SettingsWindow(object):
|
||||
self.frame_12.setObjectName(u"frame_12")
|
||||
self.frame_12.setFrameShape(QFrame.NoFrame)
|
||||
self.frame_12.setFrameShadow(QFrame.Raised)
|
||||
self.label_9 = QLabel(self.frame_12)
|
||||
self.label_9.setObjectName(u"label_9")
|
||||
self.label_9.setGeometry(QRect(350, 30, 151, 31))
|
||||
self.treeWidget = QTreeWidget(self.frame_12)
|
||||
__qtreewidgetitem = QTreeWidgetItem(self.treeWidget)
|
||||
__qtreewidgetitem1 = QTreeWidgetItem(__qtreewidgetitem)
|
||||
__qtreewidgetitem1.setCheckState(0, Qt.Checked)
|
||||
__qtreewidgetitem2 = QTreeWidgetItem(__qtreewidgetitem)
|
||||
__qtreewidgetitem2.setCheckState(0, Qt.Unchecked)
|
||||
__qtreewidgetitem3 = QTreeWidgetItem(self.treeWidget)
|
||||
__qtreewidgetitem4 = QTreeWidgetItem(__qtreewidgetitem3)
|
||||
__qtreewidgetitem4.setCheckState(0, Qt.Unchecked)
|
||||
__qtreewidgetitem5 = QTreeWidgetItem(__qtreewidgetitem3)
|
||||
__qtreewidgetitem5.setCheckState(0, Qt.Unchecked)
|
||||
QTreeWidgetItem(self.treeWidget)
|
||||
self.treeWidget.setObjectName(u"treeWidget")
|
||||
self.treeWidget.setGeometry(QRect(40, 0, 256, 192))
|
||||
self.treeWidget.setStyleSheet(u"")
|
||||
self.treeWidget.header().setVisible(False)
|
||||
self.tableWidget = QTableWidget(self.frame_12)
|
||||
if (self.tableWidget.columnCount() < 3):
|
||||
self.tableWidget.setColumnCount(3)
|
||||
__qtablewidgetitem = QTableWidgetItem()
|
||||
self.tableWidget.setHorizontalHeaderItem(0, __qtablewidgetitem)
|
||||
__qtablewidgetitem1 = QTableWidgetItem()
|
||||
self.tableWidget.setHorizontalHeaderItem(1, __qtablewidgetitem1)
|
||||
__qtablewidgetitem2 = QTableWidgetItem()
|
||||
self.tableWidget.setHorizontalHeaderItem(2, __qtablewidgetitem2)
|
||||
if (self.tableWidget.rowCount() < 2):
|
||||
self.tableWidget.setRowCount(2)
|
||||
__qtablewidgetitem3 = QTableWidgetItem()
|
||||
self.tableWidget.setVerticalHeaderItem(0, __qtablewidgetitem3)
|
||||
__qtablewidgetitem4 = QTableWidgetItem()
|
||||
self.tableWidget.setVerticalHeaderItem(1, __qtablewidgetitem4)
|
||||
__qtablewidgetitem5 = QTableWidgetItem()
|
||||
self.tableWidget.setItem(0, 0, __qtablewidgetitem5)
|
||||
__qtablewidgetitem6 = QTableWidgetItem()
|
||||
self.tableWidget.setItem(0, 1, __qtablewidgetitem6)
|
||||
__qtablewidgetitem7 = QTableWidgetItem()
|
||||
self.tableWidget.setItem(0, 2, __qtablewidgetitem7)
|
||||
__qtablewidgetitem8 = QTableWidgetItem()
|
||||
self.tableWidget.setItem(1, 0, __qtablewidgetitem8)
|
||||
__qtablewidgetitem9 = QTableWidgetItem()
|
||||
self.tableWidget.setItem(1, 1, __qtablewidgetitem9)
|
||||
__qtablewidgetitem10 = QTableWidgetItem()
|
||||
self.tableWidget.setItem(1, 2, __qtablewidgetitem10)
|
||||
self.tableWidget.setObjectName(u"tableWidget")
|
||||
self.tableWidget.setGeometry(QRect(50, 20, 611, 91))
|
||||
self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
|
||||
self.tableWidget.setTabKeyNavigation(True)
|
||||
self.tableWidget.setAlternatingRowColors(True)
|
||||
self.tableWidget.setSelectionMode(QAbstractItemView.SingleSelection)
|
||||
self.tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)
|
||||
self.tableWidget.horizontalHeader().setCascadingSectionResizes(True)
|
||||
self.tableWidget.horizontalHeader().setHighlightSections(False)
|
||||
self.tableWidget.horizontalHeader().setProperty("showSortIndicator", True)
|
||||
self.tableWidget.horizontalHeader().setStretchLastSection(True)
|
||||
self.tableWidget.verticalHeader().setVisible(False)
|
||||
self.tableWidget.verticalHeader().setHighlightSections(False)
|
||||
|
||||
self.gridLayout.addWidget(self.frame_12, 0, 0, 1, 1)
|
||||
|
||||
@ -622,7 +643,7 @@ class Ui_SettingsWindow(object):
|
||||
self.scrollAreaWidgetContents = QWidget()
|
||||
self.scrollAreaWidgetContents.setObjectName(
|
||||
u"scrollAreaWidgetContents")
|
||||
self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, 656, 551))
|
||||
self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, 741, 550))
|
||||
self.scrollAreaWidgetContents.setStyleSheet(u"QFrame#frame_engine, QFrame#frame_modelOptions {\n"
|
||||
" background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0.221409, y2:0.587, stop:0.119318 rgba(85, 78, 163, 255), stop:0.683616 rgba(0, 0, 0, 0));\n"
|
||||
"}")
|
||||
@ -657,7 +678,7 @@ class Ui_SettingsWindow(object):
|
||||
self.scrollAreaWidgetContents_4 = QWidget()
|
||||
self.scrollAreaWidgetContents_4.setObjectName(
|
||||
u"scrollAreaWidgetContents_4")
|
||||
self.scrollAreaWidgetContents_4.setGeometry(QRect(0, 0, 656, 551))
|
||||
self.scrollAreaWidgetContents_4.setGeometry(QRect(0, 0, 741, 550))
|
||||
self.scrollAreaWidgetContents_4.setStyleSheet(u"QFrame#frame_engine, QFrame#frame_modelOptions {\n"
|
||||
" background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0.221409, y2:0.587, stop:0.119318 rgba(85, 78, 163, 255), stop:0.683616 rgba(0, 0, 0, 0));\n"
|
||||
"}")
|
||||
@ -713,7 +734,7 @@ class Ui_SettingsWindow(object):
|
||||
self.scrollAreaWidgetContents_5 = QWidget()
|
||||
self.scrollAreaWidgetContents_5.setObjectName(
|
||||
u"scrollAreaWidgetContents_5")
|
||||
self.scrollAreaWidgetContents_5.setGeometry(QRect(0, 0, 656, 551))
|
||||
self.scrollAreaWidgetContents_5.setGeometry(QRect(0, 0, 741, 550))
|
||||
self.scrollAreaWidgetContents_5.setMinimumSize(QSize(600, 0))
|
||||
self.scrollAreaWidgetContents_5.setStyleSheet(u"QFrame#frame_engine, QFrame#frame_modelOptions {\n"
|
||||
" background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0.221409, y2:0.587, stop:0.119318 rgba(85, 78, 163, 255), stop:0.683616 rgba(0, 0, 0, 0));\n"
|
||||
@ -741,7 +762,7 @@ class Ui_SettingsWindow(object):
|
||||
self.frame_5.setFrameShape(QFrame.NoFrame)
|
||||
self.frame_5.setFrameShadow(QFrame.Raised)
|
||||
self.horizontalLayout_6 = QHBoxLayout(self.frame_5)
|
||||
self.horizontalLayout_6.setSpacing(45)
|
||||
self.horizontalLayout_6.setSpacing(35)
|
||||
self.horizontalLayout_6.setObjectName(u"horizontalLayout_6")
|
||||
self.horizontalLayout_6.setContentsMargins(0, 0, 0, 0)
|
||||
self.frame_6 = QFrame(self.frame_5)
|
||||
@ -1137,7 +1158,7 @@ class Ui_SettingsWindow(object):
|
||||
self.stackedWidget.setCurrentIndex(0)
|
||||
self.comboBox_highEndProcess.setCurrentIndex(4)
|
||||
self.comboBox_winSize.setCurrentIndex(0)
|
||||
self.models_stackedWidget.setCurrentIndex(0)
|
||||
self.models_stackedWidget.setCurrentIndex(1)
|
||||
self.pushButton_de.setDefault(False)
|
||||
self.pushButton_en.setDefault(False)
|
||||
|
||||
@ -1203,36 +1224,43 @@ class Ui_SettingsWindow(object):
|
||||
"SettingsWindow", u"Instrumental Model", None))
|
||||
self.label_4.setText(QCoreApplication.translate(
|
||||
"SettingsWindow", u"Vocal Model", None))
|
||||
self.label_9.setText(QCoreApplication.translate(
|
||||
"SettingsWindow", u"Ensemble Page", None))
|
||||
___qtreewidgetitem = self.treeWidget.headerItem()
|
||||
___qtreewidgetitem.setText(
|
||||
0, QCoreApplication.translate("SettingsWindow", u"1", None))
|
||||
___qtablewidgetitem = self.tableWidget.horizontalHeaderItem(0)
|
||||
___qtablewidgetitem.setText(
|
||||
QCoreApplication.translate("SettingsWindow", u"Type", None))
|
||||
___qtablewidgetitem1 = self.tableWidget.horizontalHeaderItem(1)
|
||||
___qtablewidgetitem1.setText(
|
||||
QCoreApplication.translate("SettingsWindow", u"Name", None))
|
||||
___qtablewidgetitem2 = self.tableWidget.horizontalHeaderItem(2)
|
||||
___qtablewidgetitem2.setText(QCoreApplication.translate(
|
||||
"SettingsWindow", u"Description", None))
|
||||
___qtablewidgetitem3 = self.tableWidget.verticalHeaderItem(0)
|
||||
___qtablewidgetitem3.setText(QCoreApplication.translate(
|
||||
"SettingsWindow", u"1234567", None))
|
||||
___qtablewidgetitem4 = self.tableWidget.verticalHeaderItem(1)
|
||||
___qtablewidgetitem4.setText(QCoreApplication.translate(
|
||||
"SettingsWindow", u"2353426", None))
|
||||
|
||||
__sortingEnabled = self.treeWidget.isSortingEnabled()
|
||||
self.treeWidget.setSortingEnabled(False)
|
||||
___qtreewidgetitem1 = self.treeWidget.topLevelItem(0)
|
||||
___qtreewidgetitem1.setText(0, QCoreApplication.translate(
|
||||
__sortingEnabled = self.tableWidget.isSortingEnabled()
|
||||
self.tableWidget.setSortingEnabled(False)
|
||||
___qtablewidgetitem5 = self.tableWidget.item(0, 0)
|
||||
___qtablewidgetitem5.setText(
|
||||
QCoreApplication.translate("SettingsWindow", u"Vocal", None))
|
||||
___qtablewidgetitem6 = self.tableWidget.item(0, 1)
|
||||
___qtablewidgetitem6.setText(QCoreApplication.translate(
|
||||
"SettingsWindow", u"VOCALMODELV5", None))
|
||||
___qtablewidgetitem7 = self.tableWidget.item(0, 2)
|
||||
___qtablewidgetitem7.setText(QCoreApplication.translate(
|
||||
"SettingsWindow", u"My Vocal Model", None))
|
||||
___qtablewidgetitem8 = self.tableWidget.item(1, 0)
|
||||
___qtablewidgetitem8.setText(QCoreApplication.translate(
|
||||
"SettingsWindow", u"Instrumental", None))
|
||||
___qtreewidgetitem2 = ___qtreewidgetitem1.child(0)
|
||||
___qtreewidgetitem2.setText(0, QCoreApplication.translate(
|
||||
"SettingsWindow", u"Model 1", None))
|
||||
___qtreewidgetitem3 = ___qtreewidgetitem1.child(1)
|
||||
___qtreewidgetitem3.setText(0, QCoreApplication.translate(
|
||||
"SettingsWindow", u"Model 2", None))
|
||||
___qtreewidgetitem4 = self.treeWidget.topLevelItem(1)
|
||||
___qtreewidgetitem4.setText(
|
||||
0, QCoreApplication.translate("SettingsWindow", u"Vocal", None))
|
||||
___qtreewidgetitem5 = ___qtreewidgetitem4.child(0)
|
||||
___qtreewidgetitem5.setText(0, QCoreApplication.translate(
|
||||
"SettingsWindow", u"Vocal Model 1", None))
|
||||
___qtreewidgetitem6 = ___qtreewidgetitem4.child(1)
|
||||
___qtreewidgetitem6.setText(0, QCoreApplication.translate(
|
||||
"SettingsWindow", u"Vocal Model 2", None))
|
||||
___qtreewidgetitem7 = self.treeWidget.topLevelItem(2)
|
||||
___qtreewidgetitem7.setText(0, QCoreApplication.translate(
|
||||
"SettingsWindow", u"Custom", None))
|
||||
self.treeWidget.setSortingEnabled(__sortingEnabled)
|
||||
___qtablewidgetitem9 = self.tableWidget.item(1, 1)
|
||||
___qtablewidgetitem9.setText(QCoreApplication.translate(
|
||||
"SettingsWindow", u"INSTRUMENTALMODEL", None))
|
||||
___qtablewidgetitem10 = self.tableWidget.item(1, 2)
|
||||
___qtablewidgetitem10.setText(QCoreApplication.translate(
|
||||
"SettingsWindow", u"My Instrumental best model", None))
|
||||
self.tableWidget.setSortingEnabled(__sortingEnabled)
|
||||
|
||||
self.label_6.setText(QCoreApplication.translate(
|
||||
"SettingsWindow", u"Themes", None))
|
||||
|
@ -6,6 +6,7 @@ from PySide2 import QtCore
|
||||
from PySide2 import QtGui
|
||||
from PySide2.QtGui import Qt
|
||||
# -Root imports-
|
||||
from ..resources.models.modelmanager import ModelManager
|
||||
from ..inference.lib.model_param_init import ModelParameters
|
||||
from ..resources.resources_manager import ResourcePaths
|
||||
from ..app import CustomApplication
|
||||
@ -51,6 +52,7 @@ class SettingsWindow(QtWidgets.QWidget):
|
||||
2: self.update_page_customization,
|
||||
3: self.update_page_preferences,
|
||||
}
|
||||
self.modelmanager = ModelManager()
|
||||
# Independent data
|
||||
self.exportDirectory = self.settings.value('user/exportDirectory',
|
||||
const.DEFAULT_SETTINGS['exportDirectory'],
|
||||
@ -384,8 +386,6 @@ class SettingsWindow(QtWidgets.QWidget):
|
||||
|
||||
# -Before setup-
|
||||
self.search_for_preset = False
|
||||
# Update available model lists
|
||||
self._update_selectable_models()
|
||||
# Open settings window on startup
|
||||
open_settings = self.settings.value('settingswindow/checkBox_settingsStartup',
|
||||
const.DEFAULT_SETTINGS['checkBox_settingsStartup'],
|
||||
@ -410,11 +410,13 @@ class SettingsWindow(QtWidgets.QWidget):
|
||||
# Load menu (Preferences)
|
||||
self.update_window()
|
||||
self.menu_loadPage(0, True)
|
||||
self.search_for_preset = True
|
||||
if not torch.cuda.is_available():
|
||||
self.ui.checkBox_gpuConversion.setEnabled(False)
|
||||
self.ui.checkBox_gpuConversion.setChecked(False)
|
||||
self.ui.checkBox_gpuConversion.setToolTip("CUDA is not available on your system")
|
||||
self.modelmanager.set_callback(self.changed_available_models)
|
||||
self.modelmanager.search_for_models(force_callback=True)
|
||||
self.search_for_preset = True
|
||||
self.logger.indent_backwards()
|
||||
|
||||
def load_window(self):
|
||||
@ -479,54 +481,42 @@ class SettingsWindow(QtWidgets.QWidget):
|
||||
|
||||
self.logger.indent_backwards()
|
||||
|
||||
def _update_selectable_models(self):
|
||||
def changed_available_models(self):
|
||||
"""
|
||||
Update the list of models to select from in the
|
||||
seperation settings page based on the selected AI Engine
|
||||
"""
|
||||
def get_model_id(path: str) -> str:
|
||||
buffer_size = 65536
|
||||
sha1 = hashlib.sha1()
|
||||
print(self.modelmanager.available_models)
|
||||
# def fill_model_comboBox(widget: QtWidgets.QComboBox, folder: str):
|
||||
# """
|
||||
# Fill the combobox for the model
|
||||
# """
|
||||
# currently_selected_model_name = widget.currentText()
|
||||
# widget.clear()
|
||||
# for index, f in enumerate(os.listdir(folder)):
|
||||
# if not f.endswith('.pth'):
|
||||
# # File is not a model file, so skip
|
||||
# continue
|
||||
# # Get data
|
||||
# full_path = os.path.join(folder, f)
|
||||
# model_id = get_model_id(full_path)
|
||||
# model_name = os.path.splitext(os.path.basename(f))[0]
|
||||
# # Add item to combobox
|
||||
# widget.addItem(model_name,
|
||||
# {
|
||||
# 'path': full_path,
|
||||
# 'id': model_id
|
||||
# })
|
||||
# if model_name == currently_selected_model_name:
|
||||
# # This model was selected before clearing the
|
||||
# # QComboBox, so reselect
|
||||
# widget.setCurrentIndex(index)
|
||||
|
||||
with open(path, 'rb') as f:
|
||||
while True:
|
||||
data = f.read(buffer_size)
|
||||
if not data:
|
||||
break
|
||||
sha1.update(data)
|
||||
|
||||
return sha1.hexdigest()
|
||||
|
||||
def fill_model_comboBox(widget: QtWidgets.QComboBox, folder: str):
|
||||
"""
|
||||
Fill the combobox for the model
|
||||
"""
|
||||
currently_selected_model_name = widget.currentText()
|
||||
widget.clear()
|
||||
for index, f in enumerate(os.listdir(folder)):
|
||||
if not f.endswith('.pth'):
|
||||
# File is not a model file, so skip
|
||||
continue
|
||||
# Get data
|
||||
full_path = os.path.join(folder, f)
|
||||
model_id = get_model_id(full_path)
|
||||
model_name = os.path.splitext(os.path.basename(f))[0]
|
||||
# Add item to combobox
|
||||
widget.addItem(model_name,
|
||||
{
|
||||
'path': full_path,
|
||||
'id': model_id
|
||||
})
|
||||
if model_name == currently_selected_model_name:
|
||||
# This model was selected before clearing the
|
||||
# QComboBox, so reselect
|
||||
widget.setCurrentIndex(index)
|
||||
|
||||
# Fill Comboboxes
|
||||
fill_model_comboBox(widget=self.ui.comboBox_instrumental,
|
||||
folder=ResourcePaths.instrumentalModelsDir)
|
||||
fill_model_comboBox(widget=self.ui.comboBox_vocal,
|
||||
folder=ResourcePaths.vocalModelsDir)
|
||||
# # Fill Comboboxes
|
||||
# fill_model_comboBox(widget=self.ui.comboBox_instrumental,
|
||||
# folder=ResourcePaths.instrumentalModelsDir)
|
||||
# fill_model_comboBox(widget=self.ui.comboBox_vocal,
|
||||
# folder=ResourcePaths.vocalModelsDir)
|
||||
|
||||
# Custom Models Page
|
||||
def update_page_customModels(self):
|
||||
@ -767,7 +757,7 @@ class SettingsManager:
|
||||
value = widget.currentText()
|
||||
elif (isinstance(widget, QtWidgets.QDoubleSpinBox) or
|
||||
isinstance(widget, QtWidgets.QSpinBox)):
|
||||
value = widget.value()
|
||||
value = round(widget.value(), 2)
|
||||
else:
|
||||
raise TypeError('Invalid widget type that is not supported!\nWidget: ', widget)
|
||||
|
||||
@ -825,7 +815,7 @@ class SettingsManager:
|
||||
widget.setCurrentIndex(i)
|
||||
elif (isinstance(widget, QtWidgets.QDoubleSpinBox) or
|
||||
isinstance(widget, QtWidgets.QSpinBox)):
|
||||
widget.setValue(value)
|
||||
widget.setValue(round(value, 2))
|
||||
else:
|
||||
raise TypeError('Invalid widget type that is not supported!\nWidget: ', widget)
|
||||
self.win.update_window()
|
||||
@ -838,6 +828,7 @@ class SettingsManager:
|
||||
"""
|
||||
# Before
|
||||
self.win.logger.info('Settings: Loading window')
|
||||
settings: Dict[str, Union[bool, str, float]] = {}
|
||||
# -Load states-
|
||||
self.win.settings.beginGroup('settingswindow')
|
||||
for widget in self.get_widgets():
|
||||
@ -855,35 +846,23 @@ class SettingsManager:
|
||||
value = self.win.settings.value(widget_objectName,
|
||||
defaultValue=const.DEFAULT_SETTINGS[widget_objectName],
|
||||
type=bool)
|
||||
widget.setChecked(value)
|
||||
elif isinstance(widget, QtWidgets.QLineEdit):
|
||||
value = self.win.settings.value(widget_objectName,
|
||||
defaultValue=const.DEFAULT_SETTINGS[widget_objectName],
|
||||
type=str)
|
||||
widget.setText(value)
|
||||
elif isinstance(widget, QtWidgets.QComboBox):
|
||||
value = self.win.settings.value(widget_objectName,
|
||||
defaultValue=const.DEFAULT_SETTINGS[widget_objectName],
|
||||
type=str)
|
||||
if widget.isEditable():
|
||||
# Allows self-typing
|
||||
widget.setCurrentText(value)
|
||||
else:
|
||||
# Only allows a list to choose from
|
||||
all_items = [widget.itemText(i) for i in range(widget.count())]
|
||||
for i, item in enumerate(all_items):
|
||||
if item == value:
|
||||
# Both have the same text
|
||||
widget.setCurrentIndex(i)
|
||||
elif (isinstance(widget, QtWidgets.QDoubleSpinBox) or
|
||||
isinstance(widget, QtWidgets.QSpinBox)):
|
||||
value = self.win.settings.value(widget_objectName,
|
||||
defaultValue=const.DEFAULT_SETTINGS[widget_objectName],
|
||||
type=float)
|
||||
widget.setValue(value)
|
||||
else:
|
||||
raise TypeError('Invalid widget type that is not supported!\nWidget: ', widget)
|
||||
|
||||
settings[widget_objectName] = value
|
||||
self.set_settings(settings)
|
||||
self.win.settings.endGroup()
|
||||
|
||||
def save_window(self):
|
||||
|
@ -10,7 +10,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>941</width>
|
||||
<height>551</height>
|
||||
<height>550</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@ -288,7 +288,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>741</width>
|
||||
<height>551</height>
|
||||
<height>550</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
@ -356,7 +356,7 @@
|
||||
<widget class="QFrame" name="horizontalFrame_1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4" stretch="5,2">
|
||||
<property name="spacing">
|
||||
<number>45</number>
|
||||
<number>35</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
@ -471,7 +471,7 @@
|
||||
<property name="settingsContent" stdset="0">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_16" rowstretch="0,0,0,0,0">
|
||||
<layout class="QGridLayout" name="gridLayout_16" rowstretch="0,0,0,0">
|
||||
<property name="leftMargin">
|
||||
<number>20</number>
|
||||
</property>
|
||||
@ -1094,12 +1094,12 @@
|
||||
</size>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="settingsContent" stdset="0">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<widget class="QWidget" name="models_stackedWidget_page_1" native="true">
|
||||
<widget class="QWidget" name="models_stackedWidget_page_1">
|
||||
<layout class="QGridLayout" name="gridLayout_18" rowstretch="0">
|
||||
<property name="leftMargin">
|
||||
<number>20</number>
|
||||
@ -1285,84 +1285,101 @@
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<widget class="QLabel" name="label_9">
|
||||
<widget class="QTableWidget" name="tableWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>350</x>
|
||||
<y>30</y>
|
||||
<width>151</width>
|
||||
<height>31</height>
|
||||
<x>50</x>
|
||||
<y>20</y>
|
||||
<width>611</width>
|
||||
<height>91</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Ensemble Page</string>
|
||||
<property name="editTriggers">
|
||||
<set>QAbstractItemView::NoEditTriggers</set>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QTreeWidget" name="treeWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>40</x>
|
||||
<y>0</y>
|
||||
<width>256</width>
|
||||
<height>192</height>
|
||||
</rect>
|
||||
<property name="tabKeyNavigation">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true"/>
|
||||
<property name="alternatingRowColors">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<attribute name="headerVisible">
|
||||
<property name="selectionMode">
|
||||
<enum>QAbstractItemView::SingleSelection</enum>
|
||||
</property>
|
||||
<property name="selectionBehavior">
|
||||
<enum>QAbstractItemView::SelectRows</enum>
|
||||
</property>
|
||||
<attribute name="horizontalHeaderCascadingSectionResizes">
|
||||
<bool>true</bool>
|
||||
</attribute>
|
||||
<attribute name="horizontalHeaderHighlightSections">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<attribute name="horizontalHeaderShowSortIndicator" stdset="0">
|
||||
<bool>true</bool>
|
||||
</attribute>
|
||||
<attribute name="horizontalHeaderStretchLastSection">
|
||||
<bool>true</bool>
|
||||
</attribute>
|
||||
<attribute name="verticalHeaderVisible">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<attribute name="verticalHeaderHighlightSections">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<row>
|
||||
<property name="text">
|
||||
<string>1234567</string>
|
||||
</property>
|
||||
</row>
|
||||
<row>
|
||||
<property name="text">
|
||||
<string>2353426</string>
|
||||
</property>
|
||||
</row>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>1</string>
|
||||
<string>Type</string>
|
||||
</property>
|
||||
</column>
|
||||
<item>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Instrumental</string>
|
||||
<string>Name</string>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Model 1</string>
|
||||
</property>
|
||||
<property name="checkState">
|
||||
<enum>Checked</enum>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Model 2</string>
|
||||
</property>
|
||||
<property name="checkState">
|
||||
<enum>Unchecked</enum>
|
||||
</property>
|
||||
</item>
|
||||
</item>
|
||||
<item>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Description</string>
|
||||
</property>
|
||||
</column>
|
||||
<item row="0" column="0">
|
||||
<property name="text">
|
||||
<string>Vocal</string>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Vocal Model 1</string>
|
||||
</property>
|
||||
<property name="checkState">
|
||||
<enum>Unchecked</enum>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Vocal Model 2</string>
|
||||
</property>
|
||||
<property name="checkState">
|
||||
<enum>Unchecked</enum>
|
||||
</property>
|
||||
</item>
|
||||
</item>
|
||||
<item>
|
||||
<item row="0" column="1">
|
||||
<property name="text">
|
||||
<string>Custom</string>
|
||||
<string>VOCALMODELV5</string>
|
||||
</property>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<property name="text">
|
||||
<string>My Vocal Model</string>
|
||||
</property>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<property name="text">
|
||||
<string>Instrumental</string>
|
||||
</property>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<property name="text">
|
||||
<string>INSTRUMENTALMODEL</string>
|
||||
</property>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<property name="text">
|
||||
<string>My Instrumental best model</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
@ -1420,8 +1437,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>656</width>
|
||||
<height>551</height>
|
||||
<width>741</width>
|
||||
<height>550</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
@ -1497,8 +1514,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>656</width>
|
||||
<height>551</height>
|
||||
<width>741</width>
|
||||
<height>550</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
@ -1622,8 +1639,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>656</width>
|
||||
<height>551</height>
|
||||
<width>741</width>
|
||||
<height>550</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
@ -1693,7 +1710,7 @@
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_6" stretch="1,0">
|
||||
<property name="spacing">
|
||||
<number>45</number>
|
||||
<number>35</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
|
Loading…
Reference in New Issue
Block a user