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 = (1920, 1080)
# self.resolution = (cmds.getAttr("defaultResolution.width"), cmds.getAttr("defaultResolution.height")) # self.resolution = (cmds.getAttr("defaultResolution.width"), cmds.getAttr("defaultResolution.height"))
self.percent = '100' self.percent = '100'
self.padding = 4
self.path = '' self.path = ''
self.save = True 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.format = format
self.codec = self.get_codec(codec) self.codec = self.get_codec(codec)
self.bitrate = f"{round(8 * (resolution[0] * resolution[1]) / (1920 * 1080) * (float(quality) / 100), 1)}M" self.bitrate = f"{round(8 * (resolution[0] * resolution[1]) / (1920 * 1080) * (float(quality) / 100), 1)}M"
self.resolution = resolution self.resolution = resolution
self.percent = int(scale * 100) self.percent = int(scale * 100)
self.padding = int(padding)
self.path = file_path self.path = file_path
self.save = save self.save = save
@ -165,13 +167,120 @@ class TinyblastOptionsWindow(QMainWindow):
self.ui.saveToFileCheckBox.toggled.connect(self.save_to_file_toggle) self.ui.saveToFileCheckBox.toggled.connect(self.save_to_file_toggle)
self.ui.browseButton.clicked.connect(self.browse_files) 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): def restore_settings(self):
settings = QSettings("Jack Christensen", "Tinyblast") settings = QSettings("Jack Christensen", "Tinyblast")
# Window size
geometry = settings.value("windowGeometry") geometry = settings.value("windowGeometry")
if geometry: if geometry:
self.restoreGeometry(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): def closeEvent(self, event):
settings = QSettings("Jack Christensen", "Tinyblast") settings = QSettings("Jack Christensen", "Tinyblast")
settings.setValue("windowGeometry", self.saveGeometry()) settings.setValue("windowGeometry", self.saveGeometry())
@ -257,8 +366,19 @@ class TinyblastOptionsWindow(QMainWindow):
(self.ui.widthSpinBox.value(), self.ui.heightSpinBox.value()), # Resolution (self.ui.widthSpinBox.value(), self.ui.heightSpinBox.value()), # Resolution
self.ui.scaleSpinBox.value(), # Scale self.ui.scaleSpinBox.value(), # Scale
self.ui.filePathTextBox.text(), # File path self.ui.filePathTextBox.text(), # File path
self.ui.framePaddingSpinBox.value(),
self.ui.saveToFileCheckBox.isChecked() 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): def quit_window(self):
tb_window.close() tb_window.close()