From a7e555566fe1f60da7ce40851b990caeb9716f57 Mon Sep 17 00:00:00 2001 From: Jack Date: Sun, 15 Sep 2024 21:41:42 -0400 Subject: [PATCH] Create UI and command to open it --- .../tinyblast_options.cpython-311.pyc | Bin 0 -> 27484 bytes UI/tinyblast_options.py | 362 ++++++++++++ UI/tinyblast_options.ui | 559 ++++++++++++++++++ tinyblast.py | 48 +- 4 files changed, 968 insertions(+), 1 deletion(-) create mode 100644 UI/__pycache__/tinyblast_options.cpython-311.pyc create mode 100644 UI/tinyblast_options.py create mode 100644 UI/tinyblast_options.ui diff --git a/UI/__pycache__/tinyblast_options.cpython-311.pyc b/UI/__pycache__/tinyblast_options.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9bf954de3ac443a5dc8efe50697a6c330b80a2b8 GIT binary patch literal 27484 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 literal 0 HcmV?d00001 diff --git a/UI/tinyblast_options.py b/UI/tinyblast_options.py new file mode 100644 index 0000000..ede217f --- /dev/null +++ b/UI/tinyblast_options.py @@ -0,0 +1,362 @@ +# -*- coding: utf-8 -*- + +################################################################################ +## Form generated from reading UI file 'tinyblast_options.ui' +## +## Created by: Qt User Interface Compiler version 6.7.2 +## +## WARNING! All changes made in this file will be lost when recompiling UI file! +################################################################################ + +from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale, + QMetaObject, QObject, QPoint, QRect, + QSize, QTime, QUrl, Qt) +from PySide6.QtGui import (QAction, QBrush, QColor, QConicalGradient, + QCursor, QFont, QFontDatabase, QGradient, + QIcon, QImage, QKeySequence, QLinearGradient, + QPainter, QPalette, QPixmap, QRadialGradient, + QTransform) +from PySide6.QtWidgets import (QAbstractScrollArea, QAbstractSpinBox, QApplication, QCheckBox, + QComboBox, QDoubleSpinBox, QFrame, QGridLayout, + QHBoxLayout, QLabel, QLineEdit, QMainWindow, + QMenu, QMenuBar, QPushButton, QScrollArea, + QSizePolicy, QSlider, QSpinBox, QVBoxLayout, + QWidget) + +class Ui_TinyblastOptions(object): + def setupUi(self, TinyblastOptions): + if not TinyblastOptions.objectName(): + TinyblastOptions.setObjectName(u"TinyblastOptions") + TinyblastOptions.resize(551, 432) + self.actionSave_Settings = QAction(TinyblastOptions) + self.actionSave_Settings.setObjectName(u"actionSave_Settings") + self.actionReset_Settings = QAction(TinyblastOptions) + self.actionReset_Settings.setObjectName(u"actionReset_Settings") + self.actionHelp_on_Tinyblas_Options = QAction(TinyblastOptions) + self.actionHelp_on_Tinyblas_Options.setObjectName(u"actionHelp_on_Tinyblas_Options") + self.centralwidget = QWidget(TinyblastOptions) + self.centralwidget.setObjectName(u"centralwidget") + self.verticalLayout = QVBoxLayout(self.centralwidget) + self.verticalLayout.setObjectName(u"verticalLayout") + self.Title = QLabel(self.centralwidget) + self.Title.setObjectName(u"Title") + font = QFont() + font.setFamilies([u"Dubai"]) + font.setPointSize(28) + font.setBold(True) + self.Title.setFont(font) + self.Title.setAlignment(Qt.AlignCenter) + + self.verticalLayout.addWidget(self.Title) + + self.scrollArea = QScrollArea(self.centralwidget) + self.scrollArea.setObjectName(u"scrollArea") + self.scrollArea.setFrameShape(QFrame.Box) + self.scrollArea.setFrameShadow(QFrame.Sunken) + self.scrollArea.setSizeAdjustPolicy(QAbstractScrollArea.AdjustIgnored) + self.scrollArea.setWidgetResizable(True) + self.scrollAreaWidgetContents = QWidget() + self.scrollAreaWidgetContents.setObjectName(u"scrollAreaWidgetContents") + self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, 533, 295)) + self.verticalLayout_3 = QVBoxLayout(self.scrollAreaWidgetContents) + self.verticalLayout_3.setObjectName(u"verticalLayout_3") + self.gridLayout = QGridLayout() + self.gridLayout.setObjectName(u"gridLayout") + self.filePathLabel = QLabel(self.scrollAreaWidgetContents) + self.filePathLabel.setObjectName(u"filePathLabel") + self.filePathLabel.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + + self.gridLayout.addWidget(self.filePathLabel, 10, 0, 1, 1) + + self.qualitySlider = QSlider(self.scrollAreaWidgetContents) + self.qualitySlider.setObjectName(u"qualitySlider") + self.qualitySlider.setSliderPosition(50) + self.qualitySlider.setOrientation(Qt.Horizontal) + + self.gridLayout.addWidget(self.qualitySlider, 2, 2, 1, 2) + + self.blankLabel = QLabel(self.scrollAreaWidgetContents) + self.blankLabel.setObjectName(u"blankLabel") + + self.gridLayout.addWidget(self.blankLabel, 5, 3, 1, 1) + + self.line_01 = QFrame(self.scrollAreaWidgetContents) + self.line_01.setObjectName(u"line_01") + self.line_01.setFrameShape(QFrame.Shape.HLine) + self.line_01.setFrameShadow(QFrame.Shadow.Sunken) + + 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("") + self.displaySizeComboBox.addItem("") + self.displaySizeComboBox.setObjectName(u"displaySizeComboBox") + self.displaySizeComboBox.setMinimumSize(QSize(170, 0)) + self.displaySizeComboBox.setMaximumSize(QSize(170, 16777215)) + + self.gridLayout.addWidget(self.displaySizeComboBox, 4, 1, 1, 2) + + self.displaySizeLabel = QLabel(self.scrollAreaWidgetContents) + self.displaySizeLabel.setObjectName(u"displaySizeLabel") + self.displaySizeLabel.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + + self.gridLayout.addWidget(self.displaySizeLabel, 4, 0, 1, 1) + + self.saveToFileCheckBox = QCheckBox(self.scrollAreaWidgetContents) + self.saveToFileCheckBox.setObjectName(u"saveToFileCheckBox") + self.saveToFileCheckBox.setChecked(True) + self.saveToFileCheckBox.setTristate(False) + + self.gridLayout.addWidget(self.saveToFileCheckBox, 9, 1, 1, 1) + + self.filePathTextBox = QLineEdit(self.scrollAreaWidgetContents) + self.filePathTextBox.setObjectName(u"filePathTextBox") + + self.gridLayout.addWidget(self.filePathTextBox, 10, 1, 1, 3) + + self.framePaddingSlider = QSlider(self.scrollAreaWidgetContents) + self.framePaddingSlider.setObjectName(u"framePaddingSlider") + self.framePaddingSlider.setMaximum(10) + self.framePaddingSlider.setSliderPosition(4) + self.framePaddingSlider.setOrientation(Qt.Horizontal) + + self.gridLayout.addWidget(self.framePaddingSlider, 7, 2, 1, 2) + + self.framePaddingLabel = QLabel(self.scrollAreaWidgetContents) + self.framePaddingLabel.setObjectName(u"framePaddingLabel") + self.framePaddingLabel.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + + self.gridLayout.addWidget(self.framePaddingLabel, 7, 0, 1, 1) + + self.scaleSlider = QSlider(self.scrollAreaWidgetContents) + self.scaleSlider.setObjectName(u"scaleSlider") + self.scaleSlider.setMaximum(1000) + self.scaleSlider.setValue(1000) + self.scaleSlider.setSliderPosition(1000) + self.scaleSlider.setOrientation(Qt.Horizontal) + + self.gridLayout.addWidget(self.scaleSlider, 6, 2, 1, 2) + + self.saveToFileLabel = QLabel(self.scrollAreaWidgetContents) + self.saveToFileLabel.setObjectName(u"saveToFileLabel") + self.saveToFileLabel.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + + self.gridLayout.addWidget(self.saveToFileLabel, 9, 0, 1, 1) + + self.scaleLabel = QLabel(self.scrollAreaWidgetContents) + self.scaleLabel.setObjectName(u"scaleLabel") + self.scaleLabel.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + + self.gridLayout.addWidget(self.scaleLabel, 6, 0, 1, 1) + + self.formattingLabel = QLabel(self.scrollAreaWidgetContents) + self.formattingLabel.setObjectName(u"formattingLabel") + self.formattingLabel.setMinimumSize(QSize(150, 0)) + self.formattingLabel.setMaximumSize(QSize(150, 16777215)) + self.formattingLabel.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + + self.gridLayout.addWidget(self.formattingLabel, 0, 0, 1, 1) + + self.line_00 = QFrame(self.scrollAreaWidgetContents) + self.line_00.setObjectName(u"line_00") + self.line_00.setFrameShape(QFrame.Shape.HLine) + self.line_00.setFrameShadow(QFrame.Shadow.Sunken) + + self.gridLayout.addWidget(self.line_00, 3, 0, 1, 4) + + self.qualityLabel = QLabel(self.scrollAreaWidgetContents) + self.qualityLabel.setObjectName(u"qualityLabel") + self.qualityLabel.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + + 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.gridLayout.addWidget(self.doubleSpinBox, 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.gridLayout.addWidget(self.spinBox, 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.gridLayout.addWidget(self.spinBox_2, 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.gridLayout.addWidget(self.spinBox_3, 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.gridLayout.addWidget(self.spinBox_4, 5, 2, 1, 1) + + self.browseButton = QPushButton(self.scrollAreaWidgetContents) + self.browseButton.setObjectName(u"browseButton") + + self.gridLayout.addWidget(self.browseButton, 11, 1, 1, 2) + + + self.verticalLayout_3.addLayout(self.gridLayout) + + self.scrollArea.setWidget(self.scrollAreaWidgetContents) + + self.verticalLayout.addWidget(self.scrollArea) + + self.buttonsLayout = QHBoxLayout() + self.buttonsLayout.setObjectName(u"buttonsLayout") + self.tinyblastButton = QPushButton(self.centralwidget) + self.tinyblastButton.setObjectName(u"tinyblastButton") + self.tinyblastButton.setMinimumSize(QSize(0, 30)) + + self.buttonsLayout.addWidget(self.tinyblastButton) + + self.applyButton = QPushButton(self.centralwidget) + self.applyButton.setObjectName(u"applyButton") + self.applyButton.setMinimumSize(QSize(0, 30)) + + self.buttonsLayout.addWidget(self.applyButton) + + self.quitButton = QPushButton(self.centralwidget) + self.quitButton.setObjectName(u"quitButton") + self.quitButton.setMinimumSize(QSize(0, 30)) + + self.buttonsLayout.addWidget(self.quitButton) + + + self.verticalLayout.addLayout(self.buttonsLayout) + + TinyblastOptions.setCentralWidget(self.centralwidget) + self.menubar = QMenuBar(TinyblastOptions) + self.menubar.setObjectName(u"menubar") + self.menubar.setGeometry(QRect(0, 0, 551, 21)) + self.menuFile = QMenu(self.menubar) + self.menuFile.setObjectName(u"menuFile") + self.menuHelp = QMenu(self.menubar) + self.menuHelp.setObjectName(u"menuHelp") + TinyblastOptions.setMenuBar(self.menubar) + + self.menubar.addAction(self.menuFile.menuAction()) + self.menubar.addAction(self.menuHelp.menuAction()) + self.menuFile.addAction(self.actionSave_Settings) + self.menuFile.addAction(self.actionReset_Settings) + self.menuHelp.addAction(self.actionHelp_on_Tinyblas_Options) + + self.retranslateUi(TinyblastOptions) + + QMetaObject.connectSlotsByName(TinyblastOptions) + # setupUi + + def retranslateUi(self, TinyblastOptions): + TinyblastOptions.setWindowTitle(QCoreApplication.translate("TinyblastOptions", u"Tinyblast Options", None)) + self.actionSave_Settings.setText(QCoreApplication.translate("TinyblastOptions", u"Save Settings", None)) + self.actionReset_Settings.setText(QCoreApplication.translate("TinyblastOptions", u"Reset Settings", None)) + self.actionHelp_on_Tinyblas_Options.setText(QCoreApplication.translate("TinyblastOptions", u"Help on Tinyblas Options", None)) + 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.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)) + self.formattingComboBox.setItemText(3, QCoreApplication.translate("TinyblastOptions", u"AVI", None)) + self.formattingComboBox.setItemText(4, QCoreApplication.translate("TinyblastOptions", u"WebM", None)) + +#if QT_CONFIG(statustip) + self.formattingComboBox.setStatusTip("") +#endif // QT_CONFIG(statustip) +#if QT_CONFIG(whatsthis) + self.formattingComboBox.setWhatsThis("") +#endif // QT_CONFIG(whatsthis) +#if QT_CONFIG(accessibility) + self.formattingComboBox.setAccessibleName("") +#endif // QT_CONFIG(accessibility) +#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)) + self.menuFile.setTitle(QCoreApplication.translate("TinyblastOptions", u"Edit", None)) + self.menuHelp.setTitle(QCoreApplication.translate("TinyblastOptions", u"Help", None)) + # retranslateUi + diff --git a/UI/tinyblast_options.ui b/UI/tinyblast_options.ui new file mode 100644 index 0000000..8486fd0 --- /dev/null +++ b/UI/tinyblast_options.ui @@ -0,0 +1,559 @@ + + + TinyblastOptions + + + + 0 + 0 + 551 + 432 + + + + Tinyblast Options + + + + + + + + Dubai + 28 + 75 + true + + + + Tinyblast + + + Qt::AlignCenter + + + + + + + QFrame::Box + + + QFrame::Sunken + + + QAbstractScrollArea::AdjustIgnored + + + true + + + + + 0 + 0 + 533 + 295 + + + + + + + + + File Path + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 50 + + + Qt::Horizontal + + + + + + + + + + + + + + Qt::Horizontal + + + + + + + + 80 + 0 + + + + + 80 + 16777215 + + + + + H.264 + + + + + H.265 + + + + + VP9 + + + + + ProRes + + + + + AV1 + + + + + MPEG-4 + + + + + + + + Encoding + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 80 + 0 + + + + + 80 + 16777215 + + + + + + + + + + + + + + + + + MP4 + + + + + MKV + + + + + MOV + + + + + AVI + + + + + WebM + + + + + + + + + 170 + 0 + + + + + 170 + 16777215 + + + + + From Window + + + + + From Render Settings + + + + + Custom + + + + + + + + Display Size + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + true + + + false + + + + + + + + + + 10 + + + 4 + + + Qt::Horizontal + + + + + + + Frame Padding + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 1000 + + + 1000 + + + 1000 + + + Qt::Horizontal + + + + + + + Save to File + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Scale + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 150 + 0 + + + + + 150 + 16777215 + + + + Format + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + + + + Quality + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + QAbstractSpinBox::NoButtons + + + QAbstractSpinBox::CorrectToNearestValue + + + 1.000000000000000 + + + 1.000000000000000 + + + + + + + QAbstractSpinBox::NoButtons + + + QAbstractSpinBox::CorrectToNearestValue + + + 0 + + + 100 + + + 50 + + + + + + + QAbstractSpinBox::NoButtons + + + QAbstractSpinBox::CorrectToNearestValue + + + 10 + + + 4 + + + + + + + false + + + + 80 + 16777215 + + + + QAbstractSpinBox::NoButtons + + + QAbstractSpinBox::CorrectToNearestValue + + + 999999999 + + + 1920 + + + + + + + false + + + + 80 + 16777215 + + + + QAbstractSpinBox::NoButtons + + + 999999999 + + + 1080 + + + + + + + Browse... + + + + + + + + + + + + + + + + 0 + 30 + + + + Tinyblast + + + + + + + + 0 + 30 + + + + Apply + + + + + + + + 0 + 30 + + + + Quit + + + + + + + + + + + 0 + 0 + 551 + 21 + + + + + Edit + + + + + + + Help + + + + + + + + + Save Settings + + + + + Reset Settings + + + + + Help on Tinyblas Options + + + + + + diff --git a/tinyblast.py b/tinyblast.py index 934aed6..b65f33e 100644 --- a/tinyblast.py +++ b/tinyblast.py @@ -1,10 +1,16 @@ +import maya.cmds as cmds import maya.OpenMaya as om import maya.OpenMayaMPx as ompx -import maya.cmds as cmds import os import subprocess import sys +from UI.tinyblast_options import Ui_TinyblastOptions +from PySide6 import QtCore +from PySide6.QtWidgets import QMainWindow + +import shiboken6 + # Global variable to store the scriptJob ID playblast_job_id = None original_playblast = cmds.playblast @@ -149,10 +155,49 @@ class Tinyblast(ompx.MPxCommand): def cmdCreator(): return ompx.asMPxPtr(Tinyblast()) +def get_maya_window(): + import maya.OpenMayaUI as omui + from PySide6 import QtWidgets + ptr = omui.MQtUtil.mainWindow() + if ptr is not None: + return shiboken6.wrapInstance(int(ptr), QtWidgets.QWidget) + else: + return None + + +class MyDialog(QMainWindow): + def __init__(self, parent=None): + super(MyDialog, self).__init__(parent or get_maya_window()) + self.ui = Ui_TinyblastOptions() + self.ui.setupUi(self) + # Additional setup if needed + + +def show_my_window(): + global my_dialog + try: + my_dialog.close() + my_dialog.deleteLater() + except: + pass + my_dialog = MyDialog() + my_dialog.show() + +class MyPluginCommand(ompx.MPxCommand): + def __init__(self): + ompx.MPxCommand.__init__(self) + + def doIt(self, args): + show_my_window() + +def cmdCreator(): + return ompx.asMPxPtr(MyPluginCommand()) + def initializePlugin(mobject): try: mplugin = ompx.MFnPlugin(mobject, "Jack Christensen", "1.0.0", "Any") mplugin.registerCommand("tinyblast", Tinyblast.cmdCreator) + mplugin.registerCommand("myPluginCommand", cmdCreator) om.MGlobal.displayInfo("Tinyblast plugin loaded.") setup_script_job() cmds.playblast = custom_playblast @@ -164,6 +209,7 @@ def uninitializePlugin(mobject): try: mplugin = ompx.MFnPlugin(mobject) mplugin.deregisterCommand("tinyblast") + mplugin.deregisterCommand("myPluginCommand") om.MGlobal.displayInfo("Tinyblast plugin unloaded.") except Exception as e: om.MGlobal.displayError(f"Failed to uninitialize plugin: {str(e)}")