From 0b6f65becc9439a31ec3d1dfbd656377093a4200 Mon Sep 17 00:00:00 2001 From: Jack Date: Mon, 16 Sep 2024 15:16:10 -0400 Subject: [PATCH] Connect UI elements together Still need to add functionality, but the window now behaves like it should --- .../tinyblast_options.cpython-311.pyc | Bin 27484 -> 27847 bytes UI/tinyblast_options.py | 165 +++++++------- UI/tinyblast_options.ui | 206 +++++++++--------- tinyblast.py | 175 +++++++++++++-- 4 files changed, 346 insertions(+), 200 deletions(-) diff --git a/UI/__pycache__/tinyblast_options.cpython-311.pyc b/UI/__pycache__/tinyblast_options.cpython-311.pyc index 9bf954de3ac443a5dc8efe50697a6c330b80a2b8..433c8a68492758465b08ae9b105b12b7674162f2 100644 GIT binary patch delta 5103 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 delta 4953 zcmcIneN0=|75BvuZfwklF%SaS*w|o#2^c8fB!C+r5CZ|iM+hV~?-5MFP9G*s(<-D< zrA||pEj{VdRoY6jrOihdCGs>y+Nvr2qx(=b`LUOzv$ihVw6@v)Xu9pMX-anQeYSZa zVINgzf1V75#9ziz$t7#m9o=Yu5HPB}4EON$loRLc-@l0|USN zwge{AvQZs4ld|B?SqAt{n&!)y!O@M`@YOUUs)y4!D{Ubbm*j8Zis1JdE@)0qLD?j) zENIl(b&W9#Qi(=Z2`kIA5lq@|qef^+HzUS4r%7QMA1}vq(0<7nYGQ0`l#OETb@S52 zg2C>t3?oe(HC#m6tC7}xNLdvQ($pI0}3O7dqFLa(tCaiYKhALp?u z=z3zTxSD8fq}cMGA|@ zcT^oYDW@~c$j#1x8yX6B>iQIM`dA#J*?{_@EKq}=Zg&5IJ!K@GQAkHQmJP5u-j<>0v2OxP^lQ93WY0q z$hK0&oIGAzDZ32g%aeyEAFAt&%vdZ8Df<{DLyiYMsBwH^-tV99@^>_=aQ#t2<_Oa zM$lWHkq~?hUaGRfQbh%HRb;?VDs+gQ^hY{g8rK1zS4@!mh1xDuR*<`jZc;9`u6#Q@ z!N&!5=jN#2L1zV=uQb4Ar)J$4F37LC4c~Mc;Kwx@NUydhcfXZL`hFrgXq({O>QXpf z?La;7{c0ZGsm=%$)oe^a?ofGc4uYL^)q7NtblyJ|;C%jruE4xE&>lE)kKO~mhYugB zBD$Dvm&eP`MfB4FVcruADvTqUoNwXKoagyL-%&oc0$izkRiEM&0?#e*?Tf)+z<*Cm z)`aHz#yvVNu;`uR2M_uDB-TN>AosUNk{4v;9<5PiV|2E^YIRucd-(G=ntaETmHHZA zJxMo|*YFnv`lbpmy}yNCx-$QE23G?u+ zW>b@&>H<_eONBtK(g_h4?+*%|xe*_CkPiywR7cyAK;KY>MJf)%-h_t)UAI|ovGP5P>9N5t}0sk~LhZ4zz^<2IP=wZQGxDfpl*1CIB;qaV1jNvvp> zD%wTtlCUd`T`VB)ZRw`aigsgBfq z>ZB64h*gEb=5Q|3fO)tG9D6iTRLjtmH7Ic=wyA5-G=i4FH-_~J{|ssg?~mx$;F%0RHY(%B zWDRr=ZH36FRjVU+3;Qf9ctPzLwaiztf-_@}TQg?x*C%KwyIkns`?wF|NPbe2%oWj7 z*=wC~#Gt^^o`9vtFr))hvJnbKvb6dq=5Uq7UaOJoo6lme)ycV}j9cOSXg$o1lM0Y} zJs3677_fItuG!C`_^EMuUc67X+lJ-&%kms;g0`VL_(OD-%Vx8aR+2Zx-=DO??TIsB z*>8nYll5?HzZpK6Y(gb)bFc_H_SYjj85P2t`;*8|!VCL-OS?&qLIM#-le)H6)z%2~ zmy(3gaWx^37g?4rgS-2FQ`%WEQdNAztXqIUP! z5YaPCL?01t!#g91BfQsrRNEm0<_kxBe$tSS8af0$nGNuMju#3CdG>a(0KErliZ-;f zHwejW?qHRX9&4}11VP6>gppwsl0)7*`aPXJt3Utqu=`S+^L|jq{ zSLpZ>yfR~P4kacv+*c{2A6F$!qWh{ROW{f=GP471{(!C^FGEKEz|HdkZgGy^CWxVi aSyw_&cM_tDtpD%z;?HI6-~Wvfi|{YBn<>ly diff --git a/UI/tinyblast_options.py b/UI/tinyblast_options.py index ede217f..da81d41 100644 --- a/UI/tinyblast_options.py +++ b/UI/tinyblast_options.py @@ -70,6 +70,7 @@ class Ui_TinyblastOptions(object): self.qualitySlider = QSlider(self.scrollAreaWidgetContents) self.qualitySlider.setObjectName(u"qualitySlider") + self.qualitySlider.setMaximum(100) self.qualitySlider.setSliderPosition(50) self.qualitySlider.setOrientation(Qt.Horizontal) @@ -87,37 +88,12 @@ class Ui_TinyblastOptions(object): self.gridLayout.addWidget(self.line_01, 8, 0, 1, 4) - self.encodingComboBox = QComboBox(self.scrollAreaWidgetContents) - self.encodingComboBox.addItem("") - self.encodingComboBox.addItem("") - self.encodingComboBox.addItem("") - self.encodingComboBox.addItem("") - self.encodingComboBox.addItem("") - self.encodingComboBox.addItem("") - self.encodingComboBox.setObjectName(u"encodingComboBox") - self.encodingComboBox.setMinimumSize(QSize(80, 0)) - self.encodingComboBox.setMaximumSize(QSize(80, 16777215)) - - self.gridLayout.addWidget(self.encodingComboBox, 1, 1, 1, 1) - self.encodingLabel = QLabel(self.scrollAreaWidgetContents) self.encodingLabel.setObjectName(u"encodingLabel") self.encodingLabel.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) self.gridLayout.addWidget(self.encodingLabel, 1, 0, 1, 1) - self.formattingComboBox = QComboBox(self.scrollAreaWidgetContents) - self.formattingComboBox.addItem("") - self.formattingComboBox.addItem("") - self.formattingComboBox.addItem("") - self.formattingComboBox.addItem("") - self.formattingComboBox.addItem("") - self.formattingComboBox.setObjectName(u"formattingComboBox") - self.formattingComboBox.setMinimumSize(QSize(80, 0)) - self.formattingComboBox.setMaximumSize(QSize(80, 16777215)) - - self.gridLayout.addWidget(self.formattingComboBox, 0, 1, 1, 1) - self.displaySizeComboBox = QComboBox(self.scrollAreaWidgetContents) self.displaySizeComboBox.addItem("") self.displaySizeComboBox.addItem("") @@ -202,60 +178,84 @@ class Ui_TinyblastOptions(object): self.gridLayout.addWidget(self.qualityLabel, 2, 0, 1, 1) - self.doubleSpinBox = QDoubleSpinBox(self.scrollAreaWidgetContents) - self.doubleSpinBox.setObjectName(u"doubleSpinBox") - self.doubleSpinBox.setButtonSymbols(QAbstractSpinBox.NoButtons) - self.doubleSpinBox.setCorrectionMode(QAbstractSpinBox.CorrectToNearestValue) - self.doubleSpinBox.setMaximum(1.000000000000000) - self.doubleSpinBox.setValue(1.000000000000000) + self.scaleSpinBox = QDoubleSpinBox(self.scrollAreaWidgetContents) + self.scaleSpinBox.setObjectName(u"scaleSpinBox") + self.scaleSpinBox.setButtonSymbols(QAbstractSpinBox.NoButtons) + self.scaleSpinBox.setCorrectionMode(QAbstractSpinBox.CorrectToNearestValue) + self.scaleSpinBox.setMaximum(1.000000000000000) + self.scaleSpinBox.setValue(1.000000000000000) - self.gridLayout.addWidget(self.doubleSpinBox, 6, 1, 1, 1) + self.gridLayout.addWidget(self.scaleSpinBox, 6, 1, 1, 1) - self.spinBox = QSpinBox(self.scrollAreaWidgetContents) - self.spinBox.setObjectName(u"spinBox") - self.spinBox.setButtonSymbols(QAbstractSpinBox.NoButtons) - self.spinBox.setCorrectionMode(QAbstractSpinBox.CorrectToNearestValue) - self.spinBox.setMinimum(0) - self.spinBox.setMaximum(100) - self.spinBox.setValue(50) + self.qualitySpinBox = QSpinBox(self.scrollAreaWidgetContents) + self.qualitySpinBox.setObjectName(u"qualitySpinBox") + self.qualitySpinBox.setButtonSymbols(QAbstractSpinBox.NoButtons) + self.qualitySpinBox.setCorrectionMode(QAbstractSpinBox.CorrectToNearestValue) + self.qualitySpinBox.setMinimum(0) + self.qualitySpinBox.setMaximum(100) + self.qualitySpinBox.setValue(50) - self.gridLayout.addWidget(self.spinBox, 2, 1, 1, 1) + self.gridLayout.addWidget(self.qualitySpinBox, 2, 1, 1, 1) - self.spinBox_2 = QSpinBox(self.scrollAreaWidgetContents) - self.spinBox_2.setObjectName(u"spinBox_2") - self.spinBox_2.setButtonSymbols(QAbstractSpinBox.NoButtons) - self.spinBox_2.setCorrectionMode(QAbstractSpinBox.CorrectToNearestValue) - self.spinBox_2.setMaximum(10) - self.spinBox_2.setValue(4) + self.framePaddingSpinBox = QSpinBox(self.scrollAreaWidgetContents) + self.framePaddingSpinBox.setObjectName(u"framePaddingSpinBox") + self.framePaddingSpinBox.setButtonSymbols(QAbstractSpinBox.NoButtons) + self.framePaddingSpinBox.setCorrectionMode(QAbstractSpinBox.CorrectToNearestValue) + self.framePaddingSpinBox.setMaximum(10) + self.framePaddingSpinBox.setValue(4) - self.gridLayout.addWidget(self.spinBox_2, 7, 1, 1, 1) + self.gridLayout.addWidget(self.framePaddingSpinBox, 7, 1, 1, 1) - self.spinBox_3 = QSpinBox(self.scrollAreaWidgetContents) - self.spinBox_3.setObjectName(u"spinBox_3") - self.spinBox_3.setEnabled(False) - self.spinBox_3.setMaximumSize(QSize(80, 16777215)) - self.spinBox_3.setButtonSymbols(QAbstractSpinBox.NoButtons) - self.spinBox_3.setCorrectionMode(QAbstractSpinBox.CorrectToNearestValue) - self.spinBox_3.setMaximum(999999999) - self.spinBox_3.setValue(1920) + self.widthSpinBox = QSpinBox(self.scrollAreaWidgetContents) + self.widthSpinBox.setObjectName(u"widthSpinBox") + self.widthSpinBox.setEnabled(False) + self.widthSpinBox.setMaximumSize(QSize(80, 16777215)) + self.widthSpinBox.setButtonSymbols(QAbstractSpinBox.NoButtons) + self.widthSpinBox.setCorrectionMode(QAbstractSpinBox.CorrectToNearestValue) + self.widthSpinBox.setMaximum(999999999) + self.widthSpinBox.setValue(1920) - self.gridLayout.addWidget(self.spinBox_3, 5, 1, 1, 1) + self.gridLayout.addWidget(self.widthSpinBox, 5, 1, 1, 1) - self.spinBox_4 = QSpinBox(self.scrollAreaWidgetContents) - self.spinBox_4.setObjectName(u"spinBox_4") - self.spinBox_4.setEnabled(False) - self.spinBox_4.setMaximumSize(QSize(80, 16777215)) - self.spinBox_4.setButtonSymbols(QAbstractSpinBox.NoButtons) - self.spinBox_4.setMaximum(999999999) - self.spinBox_4.setValue(1080) + self.heightSpinBox = QSpinBox(self.scrollAreaWidgetContents) + self.heightSpinBox.setObjectName(u"heightSpinBox") + self.heightSpinBox.setEnabled(False) + self.heightSpinBox.setMaximumSize(QSize(80, 16777215)) + self.heightSpinBox.setButtonSymbols(QAbstractSpinBox.NoButtons) + self.heightSpinBox.setMaximum(999999999) + self.heightSpinBox.setValue(1080) - self.gridLayout.addWidget(self.spinBox_4, 5, 2, 1, 1) + self.gridLayout.addWidget(self.heightSpinBox, 5, 2, 1, 1) self.browseButton = QPushButton(self.scrollAreaWidgetContents) self.browseButton.setObjectName(u"browseButton") self.gridLayout.addWidget(self.browseButton, 11, 1, 1, 2) + self.encodingComboBox = QComboBox(self.scrollAreaWidgetContents) + self.encodingComboBox.addItem("") + self.encodingComboBox.addItem("") + self.encodingComboBox.addItem("") + self.encodingComboBox.addItem("") + self.encodingComboBox.addItem("") + self.encodingComboBox.setObjectName(u"encodingComboBox") + self.encodingComboBox.setMinimumSize(QSize(0, 0)) + self.encodingComboBox.setMaximumSize(QSize(16777215, 16777215)) + + self.gridLayout.addWidget(self.encodingComboBox, 1, 1, 1, 2) + + self.formattingComboBox = QComboBox(self.scrollAreaWidgetContents) + self.formattingComboBox.addItem("") + self.formattingComboBox.addItem("") + self.formattingComboBox.addItem("") + self.formattingComboBox.addItem("") + self.formattingComboBox.addItem("") + self.formattingComboBox.setObjectName(u"formattingComboBox") + self.formattingComboBox.setMinimumSize(QSize(0, 0)) + self.formattingComboBox.setMaximumSize(QSize(16777215, 16777215)) + + self.gridLayout.addWidget(self.formattingComboBox, 0, 1, 1, 2) + self.verticalLayout_3.addLayout(self.gridLayout) @@ -315,14 +315,25 @@ class Ui_TinyblastOptions(object): self.Title.setText(QCoreApplication.translate("TinyblastOptions", u"Tinyblast", None)) self.filePathLabel.setText(QCoreApplication.translate("TinyblastOptions", u"File Path", None)) self.blankLabel.setText("") - self.encodingComboBox.setItemText(0, QCoreApplication.translate("TinyblastOptions", u"H.264", None)) - self.encodingComboBox.setItemText(1, QCoreApplication.translate("TinyblastOptions", u"H.265", None)) - self.encodingComboBox.setItemText(2, QCoreApplication.translate("TinyblastOptions", u"VP9", None)) - self.encodingComboBox.setItemText(3, QCoreApplication.translate("TinyblastOptions", u"ProRes", None)) - self.encodingComboBox.setItemText(4, QCoreApplication.translate("TinyblastOptions", u"AV1", None)) - self.encodingComboBox.setItemText(5, QCoreApplication.translate("TinyblastOptions", u"MPEG-4", None)) - self.encodingLabel.setText(QCoreApplication.translate("TinyblastOptions", u"Encoding", None)) + self.displaySizeComboBox.setItemText(0, QCoreApplication.translate("TinyblastOptions", u"From Window", None)) + self.displaySizeComboBox.setItemText(1, QCoreApplication.translate("TinyblastOptions", u"From Render Settings", None)) + self.displaySizeComboBox.setItemText(2, QCoreApplication.translate("TinyblastOptions", u"Custom", None)) + + self.displaySizeLabel.setText(QCoreApplication.translate("TinyblastOptions", u"Display Size", None)) + self.saveToFileCheckBox.setText("") + self.framePaddingLabel.setText(QCoreApplication.translate("TinyblastOptions", u"Frame Padding", None)) + self.saveToFileLabel.setText(QCoreApplication.translate("TinyblastOptions", u"Save to File", None)) + self.scaleLabel.setText(QCoreApplication.translate("TinyblastOptions", u"Scale", None)) + self.formattingLabel.setText(QCoreApplication.translate("TinyblastOptions", u"Format", None)) + self.qualityLabel.setText(QCoreApplication.translate("TinyblastOptions", u"Quality", None)) + self.browseButton.setText(QCoreApplication.translate("TinyblastOptions", u"Browse...", None)) + self.encodingComboBox.setItemText(0, QCoreApplication.translate("TinyblastOptions", u"HEVC (H.265)", None)) + self.encodingComboBox.setItemText(1, QCoreApplication.translate("TinyblastOptions", u"H.264", None)) + self.encodingComboBox.setItemText(2, QCoreApplication.translate("TinyblastOptions", u"AV1", None)) + self.encodingComboBox.setItemText(3, QCoreApplication.translate("TinyblastOptions", u"MPEG-4", None)) + self.encodingComboBox.setItemText(4, QCoreApplication.translate("TinyblastOptions", u"VP9", None)) + self.formattingComboBox.setItemText(0, QCoreApplication.translate("TinyblastOptions", u"MP4", None)) self.formattingComboBox.setItemText(1, QCoreApplication.translate("TinyblastOptions", u"MKV", None)) self.formattingComboBox.setItemText(2, QCoreApplication.translate("TinyblastOptions", u"MOV", None)) @@ -341,18 +352,6 @@ class Ui_TinyblastOptions(object): #if QT_CONFIG(accessibility) self.formattingComboBox.setAccessibleDescription("") #endif // QT_CONFIG(accessibility) - self.displaySizeComboBox.setItemText(0, QCoreApplication.translate("TinyblastOptions", u"From Window", None)) - self.displaySizeComboBox.setItemText(1, QCoreApplication.translate("TinyblastOptions", u"From Render Settings", None)) - self.displaySizeComboBox.setItemText(2, QCoreApplication.translate("TinyblastOptions", u"Custom", None)) - - self.displaySizeLabel.setText(QCoreApplication.translate("TinyblastOptions", u"Display Size", None)) - self.saveToFileCheckBox.setText("") - self.framePaddingLabel.setText(QCoreApplication.translate("TinyblastOptions", u"Frame Padding", None)) - self.saveToFileLabel.setText(QCoreApplication.translate("TinyblastOptions", u"Save to File", None)) - self.scaleLabel.setText(QCoreApplication.translate("TinyblastOptions", u"Scale", None)) - self.formattingLabel.setText(QCoreApplication.translate("TinyblastOptions", u"Format", None)) - self.qualityLabel.setText(QCoreApplication.translate("TinyblastOptions", u"Quality", None)) - self.browseButton.setText(QCoreApplication.translate("TinyblastOptions", u"Browse...", None)) self.tinyblastButton.setText(QCoreApplication.translate("TinyblastOptions", u"Tinyblast", None)) self.applyButton.setText(QCoreApplication.translate("TinyblastOptions", u"Apply", None)) self.quitButton.setText(QCoreApplication.translate("TinyblastOptions", u"Quit", None)) diff --git a/UI/tinyblast_options.ui b/UI/tinyblast_options.ui index 8486fd0..9f8a996 100644 --- a/UI/tinyblast_options.ui +++ b/UI/tinyblast_options.ui @@ -71,6 +71,9 @@ + + 100 + 50 @@ -93,52 +96,6 @@ - - - - - 80 - 0 - - - - - 80 - 16777215 - - - - - H.264 - - - - - H.265 - - - - - VP9 - - - - - ProRes - - - - - AV1 - - - - - MPEG-4 - - - - @@ -149,59 +106,6 @@ - - - - - 80 - 0 - - - - - 80 - 16777215 - - - - - - - - - - - - - - - - - MP4 - - - - - MKV - - - - - MOV - - - - - AVI - - - - - WebM - - - - @@ -358,7 +262,7 @@ - + QAbstractSpinBox::NoButtons @@ -374,7 +278,7 @@ - + QAbstractSpinBox::NoButtons @@ -393,7 +297,7 @@ - + QAbstractSpinBox::NoButtons @@ -409,7 +313,7 @@ - + false @@ -434,7 +338,7 @@ - + false @@ -462,6 +366,100 @@ + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + + HEVC (H.265) + + + + + H.264 + + + + + AV1 + + + + + MPEG-4 + + + + + VP9 + + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + + + + + + + + + + + + + + MP4 + + + + + MKV + + + + + MOV + + + + + AVI + + + + + WebM + + + + diff --git a/tinyblast.py b/tinyblast.py index b65f33e..1b718e4 100644 --- a/tinyblast.py +++ b/tinyblast.py @@ -1,14 +1,18 @@ import maya.cmds as cmds import maya.OpenMaya as om import maya.OpenMayaMPx as ompx + import os import subprocess import sys +import tkinter as tk +from tkinter import filedialog + +from ui.tinyblast_options import Ui_TinyblastOptions -from UI.tinyblast_options import Ui_TinyblastOptions from PySide6 import QtCore -from PySide6.QtWidgets import QMainWindow - +from PySide6.QtWidgets import QMainWindow, QFileDialog +from PySide6.QtCore import QCoreApplication import shiboken6 # Global variable to store the scriptJob ID @@ -22,7 +26,7 @@ def get_plugin_directory(): return os.path.dirname(plugin_path) def custom_playblast(*args, **kwargs): - print("Running playblast...") + print("Running tinyblast...") kwargs['format'] = 'avi' kwargs['percent'] = 100 @@ -148,7 +152,7 @@ class Tinyblast(ompx.MPxCommand): ompx.MPxCommand.__init__(self) def doIt(selfself, args): - print("Executing custom playblast command.") + print("Tinyblasting...") cmds.playblast() @staticmethod @@ -165,23 +169,167 @@ def get_maya_window(): return None -class MyDialog(QMainWindow): +class TinyblastOptionsWindow(QMainWindow): def __init__(self, parent=None): - super(MyDialog, self).__init__(parent or get_maya_window()) + super(TinyblastOptionsWindow, self).__init__(parent or get_maya_window()) self.ui = Ui_TinyblastOptions() self.ui.setupUi(self) - # Additional setup if needed + self.ui.formattingComboBox.currentIndexChanged.connect(self.update_format) + + self.ui.tinyblastButton.clicked.connect(self.tinyblast) + self.ui.applyButton.clicked.connect(self.apply_settings) + self.ui.quitButton.clicked.connect(self.quit_window) + + self.ui.qualitySlider.valueChanged.connect(self.update_quality_slider) + self.ui.qualitySpinBox.valueChanged.connect(self.update_quality_spinbox) + + self.ui.displaySizeComboBox.currentIndexChanged.connect(self.update_display_size) + + self.ui.scaleSlider.valueChanged.connect(self.update_scale_slider) + self.ui.scaleSpinBox.valueChanged.connect(self.update_scale_spinbox) + + self.ui.framePaddingSlider.valueChanged.connect(self.update_frame_padding_slider) + self.ui.framePaddingSpinBox.valueChanged.connect(self.update_frame_padding_spinbox) + + self.ui.saveToFileCheckBox.toggled.connect(self.save_to_file_toggle) + self.ui.browseButton.clicked.connect(self.browse_files) + + def update_format(self, index): + self.ui.encodingComboBox.clear() + # MP4 + 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) + ]) + + if self.ui.filePathTextBox.text(): + split_path = self.ui.filePathTextBox.text().rsplit('.', 1) + self.ui.filePathTextBox.setText(f"{split_path[0]}.mp4") + + # 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) + ]) + + if self.ui.filePathTextBox.text(): + split_path = self.ui.filePathTextBox.text().rsplit('.', 1) + self.ui.filePathTextBox.setText(f"{split_path[0]}.mkv") + # MOV + if index == 2: + self.ui.encodingComboBox.addItems([ + QCoreApplication.translate("TinyblastOptions", u"Apple ProRes", None), + QCoreApplication.translate("TinyblastOptions", u"HEVC (H.265)", None), + QCoreApplication.translate("TinyblastOptions", u"H.264", None), + QCoreApplication.translate("TinyblastOptions", u"MPEG-4", None) + ]) + + if self.ui.filePathTextBox.text(): + split_path = self.ui.filePathTextBox.text().rsplit('.', 1) + self.ui.filePathTextBox.setText(f"{split_path[0]}.mov") + # 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"DivX", None), + QCoreApplication.translate("TinyblastOptions", u"Xvid", None), + QCoreApplication.translate("TinyblastOptions", u"Motion JPEG", None), + ]) + + if self.ui.filePathTextBox.text(): + split_path = self.ui.filePathTextBox.text().rsplit('.', 1) + self.ui.filePathTextBox.setText(f"{split_path[0]}.avi") + # 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) + ]) + + if self.ui.filePathTextBox.text(): + split_path = self.ui.filePathTextBox.text().rsplit('.', 1) + self.ui.filePathTextBox.setText(f"{split_path[0]}.webm") + + def tinyblast(self): + print("Tinyblasting...") + cmds.playblast() + + def apply_settings(self): + print("TODO") + + def quit_window(self): + tb_window.close() + + def update_quality_slider(self, value): + self.ui.qualitySpinBox.setValue(value) + def update_quality_spinbox(self, value): + self.ui.qualitySlider.setValue(value) + + def update_display_size(self, index): + if index == 0: + self.ui.widthSpinBox.setEnabled(False) + self.ui.heightSpinBox.setEnabled(False) + if index == 1: + self.ui.widthSpinBox.setEnabled(False) + self.ui.heightSpinBox.setEnabled(False) + if index == 2: + self.ui.widthSpinBox.setEnabled(True) + self.ui.heightSpinBox.setEnabled(True) + + + def update_scale_slider(self, value): + self.ui.scaleSpinBox.setValue(float(value/1000.0)) + def update_scale_spinbox(self, value): + self.ui.scaleSlider.setValue(int(value*1000)) + + def update_frame_padding_slider(self, value): + self.ui.framePaddingSpinBox.setValue(value) + def update_frame_padding_spinbox(self, value): + self.ui.framePaddingSlider.setValue(value) + + def save_to_file_toggle(self): + if self.ui.saveToFileCheckBox.isChecked(): + self.ui.browseButton.setEnabled(True) + self.ui.filePathTextBox.setEnabled(True) + else: + self.ui.browseButton.setEnabled(False) + self.ui.filePathTextBox.setEnabled(False) + + def browse_files(self): + path = self.choose_save_path() + self.ui.filePathTextBox.setText(f"{path}") + + def choose_save_path(self): + current_container = str(self.ui.formattingComboBox.currentText()).lower() + save_path, _ = QFileDialog.getSaveFileName( + None, + "Choose Save Location", + "", + f"Video (*.{current_container});;All Files (*)" + ) + return save_path def show_my_window(): - global my_dialog + global tb_window try: - my_dialog.close() - my_dialog.deleteLater() + tb_window.close() + tb_window.deleteLater() except: pass - my_dialog = MyDialog() - my_dialog.show() + tb_window = TinyblastOptionsWindow() + tb_window.show() class MyPluginCommand(ompx.MPxCommand): def __init__(self): @@ -208,6 +356,7 @@ def initializePlugin(mobject): def uninitializePlugin(mobject): try: mplugin = ompx.MFnPlugin(mobject) + tb_window.close() mplugin.deregisterCommand("tinyblast") mplugin.deregisterCommand("myPluginCommand") om.MGlobal.displayInfo("Tinyblast plugin unloaded.")