From 031eb1c6effe37200173110203ae8c0e6b889192 Mon Sep 17 00:00:00 2001 From: Jack Date: Mon, 16 Sep 2024 22:53:55 -0400 Subject: [PATCH] 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. --- tinyblast.py | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 121 insertions(+), 1 deletion(-) diff --git a/tinyblast.py b/tinyblast.py index cb14659..d7e389b 100644 --- a/tinyblast.py +++ b/tinyblast.py @@ -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()