Connect UI elements together

Still need to add functionality, but the window now behaves like it should
This commit is contained in:
Jack 2024-09-16 15:16:10 -04:00
parent a7e555566f
commit 0b6f65becc
4 changed files with 346 additions and 200 deletions

View File

@ -70,6 +70,7 @@ class Ui_TinyblastOptions(object):
self.qualitySlider = QSlider(self.scrollAreaWidgetContents) self.qualitySlider = QSlider(self.scrollAreaWidgetContents)
self.qualitySlider.setObjectName(u"qualitySlider") self.qualitySlider.setObjectName(u"qualitySlider")
self.qualitySlider.setMaximum(100)
self.qualitySlider.setSliderPosition(50) self.qualitySlider.setSliderPosition(50)
self.qualitySlider.setOrientation(Qt.Horizontal) self.qualitySlider.setOrientation(Qt.Horizontal)
@ -87,37 +88,12 @@ class Ui_TinyblastOptions(object):
self.gridLayout.addWidget(self.line_01, 8, 0, 1, 4) 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 = QLabel(self.scrollAreaWidgetContents)
self.encodingLabel.setObjectName(u"encodingLabel") self.encodingLabel.setObjectName(u"encodingLabel")
self.encodingLabel.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) self.encodingLabel.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
self.gridLayout.addWidget(self.encodingLabel, 1, 0, 1, 1) 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 = QComboBox(self.scrollAreaWidgetContents)
self.displaySizeComboBox.addItem("") self.displaySizeComboBox.addItem("")
self.displaySizeComboBox.addItem("") self.displaySizeComboBox.addItem("")
@ -202,60 +178,84 @@ class Ui_TinyblastOptions(object):
self.gridLayout.addWidget(self.qualityLabel, 2, 0, 1, 1) self.gridLayout.addWidget(self.qualityLabel, 2, 0, 1, 1)
self.doubleSpinBox = QDoubleSpinBox(self.scrollAreaWidgetContents) self.scaleSpinBox = QDoubleSpinBox(self.scrollAreaWidgetContents)
self.doubleSpinBox.setObjectName(u"doubleSpinBox") self.scaleSpinBox.setObjectName(u"scaleSpinBox")
self.doubleSpinBox.setButtonSymbols(QAbstractSpinBox.NoButtons) self.scaleSpinBox.setButtonSymbols(QAbstractSpinBox.NoButtons)
self.doubleSpinBox.setCorrectionMode(QAbstractSpinBox.CorrectToNearestValue) self.scaleSpinBox.setCorrectionMode(QAbstractSpinBox.CorrectToNearestValue)
self.doubleSpinBox.setMaximum(1.000000000000000) self.scaleSpinBox.setMaximum(1.000000000000000)
self.doubleSpinBox.setValue(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.qualitySpinBox = QSpinBox(self.scrollAreaWidgetContents)
self.spinBox.setObjectName(u"spinBox") self.qualitySpinBox.setObjectName(u"qualitySpinBox")
self.spinBox.setButtonSymbols(QAbstractSpinBox.NoButtons) self.qualitySpinBox.setButtonSymbols(QAbstractSpinBox.NoButtons)
self.spinBox.setCorrectionMode(QAbstractSpinBox.CorrectToNearestValue) self.qualitySpinBox.setCorrectionMode(QAbstractSpinBox.CorrectToNearestValue)
self.spinBox.setMinimum(0) self.qualitySpinBox.setMinimum(0)
self.spinBox.setMaximum(100) self.qualitySpinBox.setMaximum(100)
self.spinBox.setValue(50) 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.framePaddingSpinBox = QSpinBox(self.scrollAreaWidgetContents)
self.spinBox_2.setObjectName(u"spinBox_2") self.framePaddingSpinBox.setObjectName(u"framePaddingSpinBox")
self.spinBox_2.setButtonSymbols(QAbstractSpinBox.NoButtons) self.framePaddingSpinBox.setButtonSymbols(QAbstractSpinBox.NoButtons)
self.spinBox_2.setCorrectionMode(QAbstractSpinBox.CorrectToNearestValue) self.framePaddingSpinBox.setCorrectionMode(QAbstractSpinBox.CorrectToNearestValue)
self.spinBox_2.setMaximum(10) self.framePaddingSpinBox.setMaximum(10)
self.spinBox_2.setValue(4) 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.widthSpinBox = QSpinBox(self.scrollAreaWidgetContents)
self.spinBox_3.setObjectName(u"spinBox_3") self.widthSpinBox.setObjectName(u"widthSpinBox")
self.spinBox_3.setEnabled(False) self.widthSpinBox.setEnabled(False)
self.spinBox_3.setMaximumSize(QSize(80, 16777215)) self.widthSpinBox.setMaximumSize(QSize(80, 16777215))
self.spinBox_3.setButtonSymbols(QAbstractSpinBox.NoButtons) self.widthSpinBox.setButtonSymbols(QAbstractSpinBox.NoButtons)
self.spinBox_3.setCorrectionMode(QAbstractSpinBox.CorrectToNearestValue) self.widthSpinBox.setCorrectionMode(QAbstractSpinBox.CorrectToNearestValue)
self.spinBox_3.setMaximum(999999999) self.widthSpinBox.setMaximum(999999999)
self.spinBox_3.setValue(1920) 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.heightSpinBox = QSpinBox(self.scrollAreaWidgetContents)
self.spinBox_4.setObjectName(u"spinBox_4") self.heightSpinBox.setObjectName(u"heightSpinBox")
self.spinBox_4.setEnabled(False) self.heightSpinBox.setEnabled(False)
self.spinBox_4.setMaximumSize(QSize(80, 16777215)) self.heightSpinBox.setMaximumSize(QSize(80, 16777215))
self.spinBox_4.setButtonSymbols(QAbstractSpinBox.NoButtons) self.heightSpinBox.setButtonSymbols(QAbstractSpinBox.NoButtons)
self.spinBox_4.setMaximum(999999999) self.heightSpinBox.setMaximum(999999999)
self.spinBox_4.setValue(1080) 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 = QPushButton(self.scrollAreaWidgetContents)
self.browseButton.setObjectName(u"browseButton") self.browseButton.setObjectName(u"browseButton")
self.gridLayout.addWidget(self.browseButton, 11, 1, 1, 2) 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) self.verticalLayout_3.addLayout(self.gridLayout)
@ -315,14 +315,25 @@ class Ui_TinyblastOptions(object):
self.Title.setText(QCoreApplication.translate("TinyblastOptions", u"Tinyblast", None)) self.Title.setText(QCoreApplication.translate("TinyblastOptions", u"Tinyblast", None))
self.filePathLabel.setText(QCoreApplication.translate("TinyblastOptions", u"File Path", None)) self.filePathLabel.setText(QCoreApplication.translate("TinyblastOptions", u"File Path", None))
self.blankLabel.setText("") 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.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(0, QCoreApplication.translate("TinyblastOptions", u"MP4", None))
self.formattingComboBox.setItemText(1, QCoreApplication.translate("TinyblastOptions", u"MKV", None)) self.formattingComboBox.setItemText(1, QCoreApplication.translate("TinyblastOptions", u"MKV", None))
self.formattingComboBox.setItemText(2, QCoreApplication.translate("TinyblastOptions", u"MOV", None)) self.formattingComboBox.setItemText(2, QCoreApplication.translate("TinyblastOptions", u"MOV", None))
@ -341,18 +352,6 @@ class Ui_TinyblastOptions(object):
#if QT_CONFIG(accessibility) #if QT_CONFIG(accessibility)
self.formattingComboBox.setAccessibleDescription("") self.formattingComboBox.setAccessibleDescription("")
#endif // QT_CONFIG(accessibility) #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.tinyblastButton.setText(QCoreApplication.translate("TinyblastOptions", u"Tinyblast", None))
self.applyButton.setText(QCoreApplication.translate("TinyblastOptions", u"Apply", None)) self.applyButton.setText(QCoreApplication.translate("TinyblastOptions", u"Apply", None))
self.quitButton.setText(QCoreApplication.translate("TinyblastOptions", u"Quit", None)) self.quitButton.setText(QCoreApplication.translate("TinyblastOptions", u"Quit", None))

View File

@ -71,6 +71,9 @@
</item> </item>
<item row="2" column="2" colspan="2"> <item row="2" column="2" colspan="2">
<widget class="QSlider" name="qualitySlider"> <widget class="QSlider" name="qualitySlider">
<property name="maximum">
<number>100</number>
</property>
<property name="sliderPosition"> <property name="sliderPosition">
<number>50</number> <number>50</number>
</property> </property>
@ -93,52 +96,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1">
<widget class="QComboBox" name="encodingComboBox">
<property name="minimumSize">
<size>
<width>80</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>80</width>
<height>16777215</height>
</size>
</property>
<item>
<property name="text">
<string>H.264</string>
</property>
</item>
<item>
<property name="text">
<string>H.265</string>
</property>
</item>
<item>
<property name="text">
<string>VP9</string>
</property>
</item>
<item>
<property name="text">
<string>ProRes</string>
</property>
</item>
<item>
<property name="text">
<string>AV1</string>
</property>
</item>
<item>
<property name="text">
<string>MPEG-4</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0"> <item row="1" column="0">
<widget class="QLabel" name="encodingLabel"> <widget class="QLabel" name="encodingLabel">
<property name="text"> <property name="text">
@ -149,59 +106,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1">
<widget class="QComboBox" name="formattingComboBox">
<property name="minimumSize">
<size>
<width>80</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>80</width>
<height>16777215</height>
</size>
</property>
<property name="statusTip">
<string/>
</property>
<property name="whatsThis">
<string/>
</property>
<property name="accessibleName">
<string/>
</property>
<property name="accessibleDescription">
<string/>
</property>
<item>
<property name="text">
<string>MP4</string>
</property>
</item>
<item>
<property name="text">
<string>MKV</string>
</property>
</item>
<item>
<property name="text">
<string>MOV</string>
</property>
</item>
<item>
<property name="text">
<string>AVI</string>
</property>
</item>
<item>
<property name="text">
<string>WebM</string>
</property>
</item>
</widget>
</item>
<item row="4" column="1" colspan="2"> <item row="4" column="1" colspan="2">
<widget class="QComboBox" name="displaySizeComboBox"> <widget class="QComboBox" name="displaySizeComboBox">
<property name="minimumSize"> <property name="minimumSize">
@ -358,7 +262,7 @@
</widget> </widget>
</item> </item>
<item row="6" column="1"> <item row="6" column="1">
<widget class="QDoubleSpinBox" name="doubleSpinBox"> <widget class="QDoubleSpinBox" name="scaleSpinBox">
<property name="buttonSymbols"> <property name="buttonSymbols">
<enum>QAbstractSpinBox::NoButtons</enum> <enum>QAbstractSpinBox::NoButtons</enum>
</property> </property>
@ -374,7 +278,7 @@
</widget> </widget>
</item> </item>
<item row="2" column="1"> <item row="2" column="1">
<widget class="QSpinBox" name="spinBox"> <widget class="QSpinBox" name="qualitySpinBox">
<property name="buttonSymbols"> <property name="buttonSymbols">
<enum>QAbstractSpinBox::NoButtons</enum> <enum>QAbstractSpinBox::NoButtons</enum>
</property> </property>
@ -393,7 +297,7 @@
</widget> </widget>
</item> </item>
<item row="7" column="1"> <item row="7" column="1">
<widget class="QSpinBox" name="spinBox_2"> <widget class="QSpinBox" name="framePaddingSpinBox">
<property name="buttonSymbols"> <property name="buttonSymbols">
<enum>QAbstractSpinBox::NoButtons</enum> <enum>QAbstractSpinBox::NoButtons</enum>
</property> </property>
@ -409,7 +313,7 @@
</widget> </widget>
</item> </item>
<item row="5" column="1"> <item row="5" column="1">
<widget class="QSpinBox" name="spinBox_3"> <widget class="QSpinBox" name="widthSpinBox">
<property name="enabled"> <property name="enabled">
<bool>false</bool> <bool>false</bool>
</property> </property>
@ -434,7 +338,7 @@
</widget> </widget>
</item> </item>
<item row="5" column="2"> <item row="5" column="2">
<widget class="QSpinBox" name="spinBox_4"> <widget class="QSpinBox" name="heightSpinBox">
<property name="enabled"> <property name="enabled">
<bool>false</bool> <bool>false</bool>
</property> </property>
@ -462,6 +366,100 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1" colspan="2">
<widget class="QComboBox" name="encodingComboBox">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<item>
<property name="text">
<string>HEVC (H.265)</string>
</property>
</item>
<item>
<property name="text">
<string>H.264</string>
</property>
</item>
<item>
<property name="text">
<string>AV1</string>
</property>
</item>
<item>
<property name="text">
<string>MPEG-4</string>
</property>
</item>
<item>
<property name="text">
<string>VP9</string>
</property>
</item>
</widget>
</item>
<item row="0" column="1" colspan="2">
<widget class="QComboBox" name="formattingComboBox">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="statusTip">
<string/>
</property>
<property name="whatsThis">
<string/>
</property>
<property name="accessibleName">
<string/>
</property>
<property name="accessibleDescription">
<string/>
</property>
<item>
<property name="text">
<string>MP4</string>
</property>
</item>
<item>
<property name="text">
<string>MKV</string>
</property>
</item>
<item>
<property name="text">
<string>MOV</string>
</property>
</item>
<item>
<property name="text">
<string>AVI</string>
</property>
</item>
<item>
<property name="text">
<string>WebM</string>
</property>
</item>
</widget>
</item>
</layout> </layout>
</item> </item>
</layout> </layout>

View File

@ -1,14 +1,18 @@
import maya.cmds as cmds import maya.cmds as cmds
import maya.OpenMaya as om import maya.OpenMaya as om
import maya.OpenMayaMPx as ompx import maya.OpenMayaMPx as ompx
import os import os
import subprocess import subprocess
import sys 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 import QtCore
from PySide6.QtWidgets import QMainWindow from PySide6.QtWidgets import QMainWindow, QFileDialog
from PySide6.QtCore import QCoreApplication
import shiboken6 import shiboken6
# Global variable to store the scriptJob ID # Global variable to store the scriptJob ID
@ -22,7 +26,7 @@ def get_plugin_directory():
return os.path.dirname(plugin_path) return os.path.dirname(plugin_path)
def custom_playblast(*args, **kwargs): def custom_playblast(*args, **kwargs):
print("Running playblast...") print("Running tinyblast...")
kwargs['format'] = 'avi' kwargs['format'] = 'avi'
kwargs['percent'] = 100 kwargs['percent'] = 100
@ -148,7 +152,7 @@ class Tinyblast(ompx.MPxCommand):
ompx.MPxCommand.__init__(self) ompx.MPxCommand.__init__(self)
def doIt(selfself, args): def doIt(selfself, args):
print("Executing custom playblast command.") print("Tinyblasting...")
cmds.playblast() cmds.playblast()
@staticmethod @staticmethod
@ -165,23 +169,167 @@ def get_maya_window():
return None return None
class MyDialog(QMainWindow): class TinyblastOptionsWindow(QMainWindow):
def __init__(self, parent=None): 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 = Ui_TinyblastOptions()
self.ui.setupUi(self) 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(): def show_my_window():
global my_dialog global tb_window
try: try:
my_dialog.close() tb_window.close()
my_dialog.deleteLater() tb_window.deleteLater()
except: except:
pass pass
my_dialog = MyDialog() tb_window = TinyblastOptionsWindow()
my_dialog.show() tb_window.show()
class MyPluginCommand(ompx.MPxCommand): class MyPluginCommand(ompx.MPxCommand):
def __init__(self): def __init__(self):
@ -208,6 +356,7 @@ def initializePlugin(mobject):
def uninitializePlugin(mobject): def uninitializePlugin(mobject):
try: try:
mplugin = ompx.MFnPlugin(mobject) mplugin = ompx.MFnPlugin(mobject)
tb_window.close()
mplugin.deregisterCommand("tinyblast") mplugin.deregisterCommand("tinyblast")
mplugin.deregisterCommand("myPluginCommand") mplugin.deregisterCommand("myPluginCommand")
om.MGlobal.displayInfo("Tinyblast plugin unloaded.") om.MGlobal.displayInfo("Tinyblast plugin unloaded.")