Save settings between Tinyblast Options sessions

Currently, the settings are saved at a global level and automatically save between Maya sessions. I plan on making the settings save during inside sessions but reset between sessions. I think I'd like to make settings connect to Maya scenes, but I'll have to do more research to see if that's possible. At the moment reseting settings between sessions is what I'm working towards.
This commit is contained in:
Jack 2024-09-16 22:53:55 -04:00
parent 0e3c2c5965
commit 031eb1c6ef
1 changed files with 121 additions and 1 deletions

View File

@ -39,15 +39,17 @@ class Tinyblast(ompx.MPxCommand):
self.resolution = (1920, 1080)
# self.resolution = (cmds.getAttr("defaultResolution.width"), cmds.getAttr("defaultResolution.height"))
self.percent = '100'
self.padding = 4
self.path = ''
self.save = True
def apply_settings(self, format, codec, quality, resolution, scale, file_path, save):
def apply_settings(self, format, codec, quality, resolution, scale, file_path, padding, save):
self.format = format
self.codec = self.get_codec(codec)
self.bitrate = f"{round(8 * (resolution[0] * resolution[1]) / (1920 * 1080) * (float(quality) / 100), 1)}M"
self.resolution = resolution
self.percent = int(scale * 100)
self.padding = int(padding)
self.path = file_path
self.save = save
@ -165,13 +167,120 @@ class TinyblastOptionsWindow(QMainWindow):
self.ui.saveToFileCheckBox.toggled.connect(self.save_to_file_toggle)
self.ui.browseButton.clicked.connect(self.browse_files)
def get_codecs_from_format(self, index):
if index == 0:
self.ui.encodingComboBox.addItems([
QCoreApplication.translate("TinyblastOptions", u"HEVC (H.265)", None),
QCoreApplication.translate("TinyblastOptions", u"H.264", None),
QCoreApplication.translate("TinyblastOptions", u"AV1", None),
QCoreApplication.translate("TinyblastOptions", u"MPEG-4", None),
QCoreApplication.translate("TinyblastOptions", u"VP9", None)
])
# MKV
if index == 1:
self.ui.encodingComboBox.addItems([
QCoreApplication.translate("TinyblastOptions", u"HEVC (H.265)", None),
QCoreApplication.translate("TinyblastOptions", u"H.264", None),
QCoreApplication.translate("TinyblastOptions", u"AV1", None),
QCoreApplication.translate("TinyblastOptions", u"VP9", None),
QCoreApplication.translate("TinyblastOptions", u"VP8", None),
QCoreApplication.translate("TinyblastOptions", u"Theora", None)
])
# MOV
if index == 2:
self.ui.encodingComboBox.addItems([
QCoreApplication.translate("TinyblastOptions", u"HEVC (H.265)", None),
QCoreApplication.translate("TinyblastOptions", u"H.264", None),
QCoreApplication.translate("TinyblastOptions", u"DNxHD", None),
QCoreApplication.translate("TinyblastOptions", u"DNxHR", None),
QCoreApplication.translate("TinyblastOptions", u"MPEG-4", None)
])
# AVI
if index == 3:
self.ui.encodingComboBox.addItems([
QCoreApplication.translate("TinyblastOptions", u"H.264", None),
QCoreApplication.translate("TinyblastOptions", u"MPEG-4", None),
QCoreApplication.translate("TinyblastOptions", u"Motion JPEG", None),
])
# WEBM
if index == 4:
self.ui.encodingComboBox.addItems([
QCoreApplication.translate("TinyblastOptions", u"AV1", None),
QCoreApplication.translate("TinyblastOptions", u"VP9", None),
QCoreApplication.translate("TinyblastOptions", u"VP8", None)
])
# Restore applied settings
def restore_settings(self):
settings = QSettings("Jack Christensen", "Tinyblast")
# Window size
geometry = settings.value("windowGeometry")
if geometry:
self.restoreGeometry(geometry)
# Format dropdown menu
formatIndex = settings.value("formatIndex", 0)
self.ui.formattingComboBox.setCurrentIndex(int(formatIndex))
self.update_format(int(formatIndex))
#self.get_codecs_from_format(int(formatIndex))
# Codec dropdown menu
codecIndex = settings.value("codecIndex", 0)
self.ui.encodingComboBox.setCurrentIndex(int(codecIndex))
# Quality value
qualityValue = settings.value("qualityValue", 0)
self.ui.qualitySpinBox.setValue(int(qualityValue))
self.ui.qualitySlider.setValue(int(qualityValue))
# Display size dropdown menu
displaySizeIndex = settings.value("displaySizeIndex", 0)
self.ui.displaySizeComboBox.setCurrentIndex(int(displaySizeIndex))
# Resolution values
resolutionValues = settings.value("resolution", [1920, 1080])
if isinstance(resolutionValues, list) and len(resolutionValues) == 2:
self.ui.widthSpinBox.setValue(int(resolutionValues[0]))
self.ui.heightSpinBox.setValue(int(resolutionValues[1]))
# Scale value
scaleValue = settings.value("scaleValue", 0.0)
self.ui.scaleSpinBox.setValue(float(scaleValue))
self.ui.scaleSlider.setValue(int(float(scaleValue) * 1000.0))
# Frame padding
framePaddingValue = settings.value("framePaddingValue", 0)
self.ui.framePaddingSpinBox.setValue(int(framePaddingValue))
self.ui.framePaddingSlider.setValue(int(framePaddingValue))
# Save to file checkbox
saveToFile = settings.value("saveToFileCheck", False)
if saveToFile == 'true':
self.ui.saveToFileCheckBox.setChecked(True)
self.ui.filePathTextBox.setEnabled(True)
self.ui.browseButton.setEnabled(True)
else:
self.ui.saveToFileCheckBox.setChecked(False)
self.ui.filePathTextBox.setEnabled(False)
self.ui.browseButton.setEnabled(False)
# Save path
savePath = settings.value("savePath", 0)
self.ui.filePathTextBox.setText(str(savePath))
# settings = QSettings("Jack Christensen", "Tinyblast")
# settings.setValue("formatIndex", self.ui.formattingComboBox.currentIndex())
# settings.setValue("codecIndex", self.ui.encodingComboBox.currentIndex())
# settings.setValue("qualityValue", self.ui.qualitySpinBox.value())
# settings.setValue("displaySizeIndex", self.ui.displaySizeComboBox.currentIndex())
# settings.setValue("resolution", (self.ui.widthSpinBox.value(), self.ui.heightSpinBox.value()))
# settings.setValue("scaleValue", self.ui.scaleSpinBox.value())
# settings.setValue("framePaddingValue", self.ui.framePaddingSpinBox.value())
# settings.setValue("saveToFileCheck", self.ui.saveToFileCheckBox.isChecked())
# settings.setValue("savePath", self.ui.filePathTextBox.text())
# Save settings on close
def closeEvent(self, event):
settings = QSettings("Jack Christensen", "Tinyblast")
settings.setValue("windowGeometry", self.saveGeometry())
@ -257,8 +366,19 @@ class TinyblastOptionsWindow(QMainWindow):
(self.ui.widthSpinBox.value(), self.ui.heightSpinBox.value()), # Resolution
self.ui.scaleSpinBox.value(), # Scale
self.ui.filePathTextBox.text(), # File path
self.ui.framePaddingSpinBox.value(),
self.ui.saveToFileCheckBox.isChecked()
)
settings = QSettings("Jack Christensen", "Tinyblast")
settings.setValue("formatIndex", self.ui.formattingComboBox.currentIndex())
settings.setValue("codecIndex", self.ui.encodingComboBox.currentIndex())
settings.setValue("qualityValue", self.ui.qualitySpinBox.value())
settings.setValue("displaySizeIndex", self.ui.displaySizeComboBox.currentIndex())
settings.setValue("resolution", (self.ui.widthSpinBox.value(), self.ui.heightSpinBox.value()))
settings.setValue("scaleValue", self.ui.scaleSpinBox.value())
settings.setValue("framePaddingValue", self.ui.framePaddingSpinBox.value())
settings.setValue("saveToFileCheck", self.ui.saveToFileCheckBox.isChecked())
settings.setValue("savePath", self.ui.filePathTextBox.text())
def quit_window(self):
tb_window.close()