From f307a4f892063b11daf85588906bab1c4c098f5a Mon Sep 17 00:00:00 2001 From: CodeByMrFinchum Date: Wed, 8 Jan 2025 15:43:59 +0100 Subject: [PATCH] Major facelift. Easier to use. --- src/OptimaLab35/ui/main_window.py | 285 ++++++++++++++++++++---------- 1 file changed, 189 insertions(+), 96 deletions(-) diff --git a/src/OptimaLab35/ui/main_window.py b/src/OptimaLab35/ui/main_window.py index 890eb7f..f93435c 100644 --- a/src/OptimaLab35/ui/main_window.py +++ b/src/OptimaLab35/ui/main_window.py @@ -20,18 +20,22 @@ from PySide6.QtWidgets import (QApplication, QCheckBox, QComboBox, QDateEdit, QFrame, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QLineEdit, QMainWindow, QMenu, QMenuBar, QProgressBar, QPushButton, QSizePolicy, - QSpinBox, QStatusBar, QTabWidget, QVBoxLayout, - QWidget) + QSlider, QSpinBox, QStatusBar, QTabWidget, + QVBoxLayout, QWidget) class Ui_MainWindow(object): def setupUi(self, MainWindow): if not MainWindow.objectName(): MainWindow.setObjectName(u"MainWindow") - MainWindow.resize(450, 708) + MainWindow.resize(440, 756) MainWindow.setMinimumSize(QSize(350, 677)) - MainWindow.setMaximumSize(QSize(500, 1000)) + MainWindow.setMaximumSize(QSize(1000, 1000)) self.actionInfo = QAction(MainWindow) self.actionInfo.setObjectName(u"actionInfo") + self.actionPreview = QAction(MainWindow) + self.actionPreview.setObjectName(u"actionPreview") + self.actionAbout = QAction(MainWindow) + self.actionAbout.setObjectName(u"actionAbout") self.centralwidget = QWidget(MainWindow) self.centralwidget.setObjectName(u"centralwidget") self.gridLayout = QGridLayout(self.centralwidget) @@ -48,25 +52,25 @@ class Ui_MainWindow(object): self.folder_group.setMaximumSize(QSize(400, 16777215)) self.gridLayout_5 = QGridLayout(self.folder_group) self.gridLayout_5.setObjectName(u"gridLayout_5") + self.input_folder_button = QPushButton(self.folder_group) + self.input_folder_button.setObjectName(u"input_folder_button") + + self.gridLayout_5.addWidget(self.input_folder_button, 0, 1, 1, 1) + + self.output_path = QLineEdit(self.folder_group) + self.output_path.setObjectName(u"output_path") + + self.gridLayout_5.addWidget(self.output_path, 0, 2, 1, 1) + self.input_path = QLineEdit(self.folder_group) self.input_path.setObjectName(u"input_path") self.gridLayout_5.addWidget(self.input_path, 0, 0, 1, 1) - self.output_path = QLineEdit(self.folder_group) - self.output_path.setObjectName(u"output_path") - - self.gridLayout_5.addWidget(self.output_path, 0, 1, 1, 1) - - self.input_folder_button = QPushButton(self.folder_group) - self.input_folder_button.setObjectName(u"input_folder_button") - - self.gridLayout_5.addWidget(self.input_folder_button, 1, 0, 1, 1) - self.output_folder_button = QPushButton(self.folder_group) self.output_folder_button.setObjectName(u"output_folder_button") - self.gridLayout_5.addWidget(self.output_folder_button, 1, 1, 1, 1) + self.gridLayout_5.addWidget(self.output_folder_button, 0, 3, 1, 1) self.verticalLayout_10.addWidget(self.folder_group) @@ -76,36 +80,38 @@ class Ui_MainWindow(object): self.groupBox.setMaximumSize(QSize(400, 16777215)) self.gridLayout_4 = QGridLayout(self.groupBox) self.gridLayout_4.setObjectName(u"gridLayout_4") - self.resize_checkbox = QCheckBox(self.groupBox) - self.resize_checkbox.setObjectName(u"resize_checkbox") + self.quality_label_2 = QLabel(self.groupBox) + self.quality_label_2.setObjectName(u"quality_label_2") - self.gridLayout_4.addWidget(self.resize_checkbox, 0, 0, 1, 1) - - self.resize_spinBox = QSpinBox(self.groupBox) - self.resize_spinBox.setObjectName(u"resize_spinBox") - self.resize_spinBox.setEnabled(False) - self.resize_spinBox.setMinimum(1) - self.resize_spinBox.setMaximum(200) - self.resize_spinBox.setSingleStep(1) - self.resize_spinBox.setValue(80) - - self.gridLayout_4.addWidget(self.resize_spinBox, 0, 1, 1, 1) - - self.image_type = QComboBox(self.groupBox) - self.image_type.addItem(u"jpg") - self.image_type.addItem(u"png") - self.image_type.addItem(u"webp") - self.image_type.setObjectName(u"image_type") - - self.gridLayout_4.addWidget(self.image_type, 1, 0, 1, 1) + self.gridLayout_4.addWidget(self.quality_label_2, 4, 0, 1, 1) self.jpg_quality_spinBox = QSpinBox(self.groupBox) self.jpg_quality_spinBox.setObjectName(u"jpg_quality_spinBox") self.jpg_quality_spinBox.setMinimum(1) self.jpg_quality_spinBox.setMaximum(100) - self.jpg_quality_spinBox.setValue(80) + self.jpg_quality_spinBox.setValue(90) - self.gridLayout_4.addWidget(self.jpg_quality_spinBox, 1, 1, 1, 1) + self.gridLayout_4.addWidget(self.jpg_quality_spinBox, 3, 3, 1, 1) + + self.label_11 = QLabel(self.groupBox) + self.label_11.setObjectName(u"label_11") + + self.gridLayout_4.addWidget(self.label_11, 0, 0, 1, 1) + + self.optimize_checkBox = QCheckBox(self.groupBox) + self.optimize_checkBox.setObjectName(u"optimize_checkBox") + + self.gridLayout_4.addWidget(self.optimize_checkBox, 0, 3, 1, 1) + + self.png_quality_Slider = QSlider(self.groupBox) + self.png_quality_Slider.setObjectName(u"png_quality_Slider") + self.png_quality_Slider.setMinimum(1) + self.png_quality_Slider.setMaximum(9) + self.png_quality_Slider.setPageStep(1) + self.png_quality_Slider.setSliderPosition(6) + self.png_quality_Slider.setOrientation(Qt.Horizontal) + + self.gridLayout_4.addWidget(self.png_quality_Slider, 4, 2, 1, 1) self.png_quality_spinBox = QSpinBox(self.groupBox) self.png_quality_spinBox.setObjectName(u"png_quality_spinBox") @@ -114,72 +120,140 @@ class Ui_MainWindow(object): self.png_quality_spinBox.setMaximum(9) self.png_quality_spinBox.setValue(6) - self.gridLayout_4.addWidget(self.png_quality_spinBox, 1, 2, 1, 1) + self.gridLayout_4.addWidget(self.png_quality_spinBox, 4, 3, 1, 1) - self.optimize_checkBox = QCheckBox(self.groupBox) - self.optimize_checkBox.setObjectName(u"optimize_checkBox") + self.quality_label_1 = QLabel(self.groupBox) + self.quality_label_1.setObjectName(u"quality_label_1") - self.gridLayout_4.addWidget(self.optimize_checkBox, 0, 2, 1, 1) + self.gridLayout_4.addWidget(self.quality_label_1, 3, 0, 1, 1) + + self.image_type = QComboBox(self.groupBox) + self.image_type.addItem(u"jpg") + self.image_type.addItem(u"png") + self.image_type.addItem(u"webp") + self.image_type.setObjectName(u"image_type") + + self.gridLayout_4.addWidget(self.image_type, 0, 2, 1, 1) + + self.jpg_quality_Slider = QSlider(self.groupBox) + self.jpg_quality_Slider.setObjectName(u"jpg_quality_Slider") + self.jpg_quality_Slider.setMinimum(1) + self.jpg_quality_Slider.setMaximum(100) + self.jpg_quality_Slider.setSliderPosition(90) + self.jpg_quality_Slider.setOrientation(Qt.Horizontal) + + self.gridLayout_4.addWidget(self.jpg_quality_Slider, 3, 2, 1, 1) + + self.label_13 = QLabel(self.groupBox) + self.label_13.setObjectName(u"label_13") + + self.gridLayout_4.addWidget(self.label_13, 5, 0, 1, 1) + + self.resize_Slider = QSlider(self.groupBox) + self.resize_Slider.setObjectName(u"resize_Slider") + self.resize_Slider.setMinimum(1) + self.resize_Slider.setMaximum(200) + self.resize_Slider.setValue(100) + self.resize_Slider.setOrientation(Qt.Horizontal) + + self.gridLayout_4.addWidget(self.resize_Slider, 5, 2, 1, 1) + + self.resize_spinBox = QSpinBox(self.groupBox) + self.resize_spinBox.setObjectName(u"resize_spinBox") + self.resize_spinBox.setEnabled(True) + self.resize_spinBox.setMinimum(1) + self.resize_spinBox.setMaximum(200) + self.resize_spinBox.setSingleStep(1) + self.resize_spinBox.setValue(100) + + self.gridLayout_4.addWidget(self.resize_spinBox, 5, 3, 1, 1) - self.png_quality_spinBox.raise_() - self.resize_checkbox.raise_() - self.resize_spinBox.raise_() - self.image_type.raise_() - self.jpg_quality_spinBox.raise_() - self.optimize_checkBox.raise_() self.verticalLayout_10.addWidget(self.groupBox) self.groupBox_2 = QGroupBox(self.tab_1) self.groupBox_2.setObjectName(u"groupBox_2") self.groupBox_2.setMaximumSize(QSize(400, 16777215)) + self.groupBox_2.setMouseTracking(False) self.gridLayout_3 = QGridLayout(self.groupBox_2) self.gridLayout_3.setObjectName(u"gridLayout_3") - self.watermark_lineEdit = QLineEdit(self.groupBox_2) - self.watermark_lineEdit.setObjectName(u"watermark_lineEdit") - self.watermark_lineEdit.setEnabled(False) + self.label_9 = QLabel(self.groupBox_2) + self.label_9.setObjectName(u"label_9") - self.gridLayout_3.addWidget(self.watermark_lineEdit, 3, 0, 1, 3) + self.gridLayout_3.addWidget(self.label_9, 1, 0, 1, 1) - self.brightness_checkbox = QCheckBox(self.groupBox_2) - self.brightness_checkbox.setObjectName(u"brightness_checkbox") + self.brightness_horizontalSlider = QSlider(self.groupBox_2) + self.brightness_horizontalSlider.setObjectName(u"brightness_horizontalSlider") + self.brightness_horizontalSlider.setMinimum(-100) + self.brightness_horizontalSlider.setMaximum(100) + self.brightness_horizontalSlider.setOrientation(Qt.Horizontal) - self.gridLayout_3.addWidget(self.brightness_checkbox, 0, 0, 1, 1) + self.gridLayout_3.addWidget(self.brightness_horizontalSlider, 1, 1, 1, 1) + + self.brightness_spinBox = QSpinBox(self.groupBox_2) + self.brightness_spinBox.setObjectName(u"brightness_spinBox") + self.brightness_spinBox.setEnabled(True) + self.brightness_spinBox.setMinimum(-100) + self.brightness_spinBox.setMaximum(100) + self.brightness_spinBox.setValue(0) + + self.gridLayout_3.addWidget(self.brightness_spinBox, 1, 2, 1, 1) + + self.contrast_spinBox = QSpinBox(self.groupBox_2) + self.contrast_spinBox.setObjectName(u"contrast_spinBox") + self.contrast_spinBox.setEnabled(True) + self.contrast_spinBox.setMinimum(-100) + self.contrast_spinBox.setMaximum(100) + self.contrast_spinBox.setValue(0) + + self.gridLayout_3.addWidget(self.contrast_spinBox, 4, 2, 1, 1) + + self.label_10 = QLabel(self.groupBox_2) + self.label_10.setObjectName(u"label_10") + + self.gridLayout_3.addWidget(self.label_10, 4, 0, 1, 1) + + self.contrast_horizontalSlider = QSlider(self.groupBox_2) + self.contrast_horizontalSlider.setObjectName(u"contrast_horizontalSlider") + self.contrast_horizontalSlider.setMinimum(-100) + self.contrast_horizontalSlider.setMaximum(100) + self.contrast_horizontalSlider.setOrientation(Qt.Horizontal) + + self.gridLayout_3.addWidget(self.contrast_horizontalSlider, 4, 1, 1, 1) self.grayscale_checkBox = QCheckBox(self.groupBox_2) self.grayscale_checkBox.setObjectName(u"grayscale_checkBox") - self.gridLayout_3.addWidget(self.grayscale_checkBox, 0, 2, 1, 1) + self.gridLayout_3.addWidget(self.grayscale_checkBox, 5, 0, 1, 2) - self.contrast_spinBox = QSpinBox(self.groupBox_2) - self.contrast_spinBox.setObjectName(u"contrast_spinBox") - self.contrast_spinBox.setEnabled(False) - self.contrast_spinBox.setMinimum(-100) - self.contrast_spinBox.setMaximum(100) - self.contrast_spinBox.setValue(10) + self.preview_Button = QPushButton(self.groupBox_2) + self.preview_Button.setObjectName(u"preview_Button") - self.gridLayout_3.addWidget(self.contrast_spinBox, 1, 1, 1, 1) + self.gridLayout_3.addWidget(self.preview_Button, 5, 2, 1, 1) - self.watermark_checkbox = QCheckBox(self.groupBox_2) - self.watermark_checkbox.setObjectName(u"watermark_checkbox") - self.gridLayout_3.addWidget(self.watermark_checkbox, 2, 0, 1, 1) + self.verticalLayout_10.addWidget(self.groupBox_2) - self.brightness_spinBox = QSpinBox(self.groupBox_2) - self.brightness_spinBox.setObjectName(u"brightness_spinBox") - self.brightness_spinBox.setEnabled(False) - self.brightness_spinBox.setMinimum(-100) - self.brightness_spinBox.setMaximum(100) - self.brightness_spinBox.setValue(-10) + self.groupBox_3 = QGroupBox(self.tab_1) + self.groupBox_3.setObjectName(u"groupBox_3") + self.groupBox_3.setEnabled(True) + self.groupBox_3.setFlat(False) + self.groupBox_3.setCheckable(False) + self.groupBox_3.setChecked(False) + self.horizontalLayout_5 = QHBoxLayout(self.groupBox_3) + self.horizontalLayout_5.setObjectName(u"horizontalLayout_5") + self.watermark_lineEdit = QLineEdit(self.groupBox_3) + self.watermark_lineEdit.setObjectName(u"watermark_lineEdit") + self.watermark_lineEdit.setEnabled(True) - self.gridLayout_3.addWidget(self.brightness_spinBox, 0, 1, 1, 1) + self.horizontalLayout_5.addWidget(self.watermark_lineEdit) - self.contrast_checkbox = QCheckBox(self.groupBox_2) - self.contrast_checkbox.setObjectName(u"contrast_checkbox") + self.label_12 = QLabel(self.groupBox_3) + self.label_12.setObjectName(u"label_12") - self.gridLayout_3.addWidget(self.contrast_checkbox, 1, 0, 1, 1) + self.horizontalLayout_5.addWidget(self.label_12) - self.font_size_comboBox = QComboBox(self.groupBox_2) + self.font_size_comboBox = QComboBox(self.groupBox_3) self.font_size_comboBox.addItem("") self.font_size_comboBox.addItem("") self.font_size_comboBox.addItem("") @@ -187,10 +261,10 @@ class Ui_MainWindow(object): self.font_size_comboBox.addItem("") self.font_size_comboBox.setObjectName(u"font_size_comboBox") - self.gridLayout_3.addWidget(self.font_size_comboBox, 2, 1, 1, 1) + self.horizontalLayout_5.addWidget(self.font_size_comboBox) - self.verticalLayout_10.addWidget(self.groupBox_2) + self.verticalLayout_10.addWidget(self.groupBox_3) self.rename_group = QGroupBox(self.tab_1) self.rename_group.setObjectName(u"rename_group") @@ -465,19 +539,19 @@ class Ui_MainWindow(object): MainWindow.setStatusBar(self.statusBar) self.menuBar = QMenuBar(MainWindow) self.menuBar.setObjectName(u"menuBar") - self.menuBar.setGeometry(QRect(0, 0, 450, 27)) + self.menuBar.setGeometry(QRect(0, 0, 440, 27)) self.menuInfo = QMenu(self.menuBar) self.menuInfo.setObjectName(u"menuInfo") + self.menuHelp = QMenu(self.menuBar) + self.menuHelp.setObjectName(u"menuHelp") MainWindow.setMenuBar(self.menuBar) self.menuBar.addAction(self.menuInfo.menuAction()) - self.menuInfo.addAction(self.actionInfo) + self.menuBar.addAction(self.menuHelp.menuAction()) + self.menuInfo.addAction(self.actionPreview) + self.menuHelp.addAction(self.actionAbout) self.retranslateUi(MainWindow) - self.resize_checkbox.toggled.connect(self.resize_spinBox.setEnabled) - self.brightness_checkbox.toggled.connect(self.brightness_spinBox.setEnabled) - self.contrast_checkbox.toggled.connect(self.contrast_spinBox.setEnabled) - self.watermark_checkbox.toggled.connect(self.watermark_lineEdit.setEnabled) self.rename_checkbox.toggled.connect(self.filename.setEnabled) self.exif_checkbox.toggled.connect(self.exif_options_group.setEnabled) self.exif_checkbox.toggled.connect(self.exif_copy_checkBox.setDisabled) @@ -488,6 +562,17 @@ class Ui_MainWindow(object): self.exif_checkbox.toggled.connect(self.gps_groupBox.setEnabled) self.gps_checkBox.toggled.connect(self.lat_lineEdit.setEnabled) self.gps_checkBox.toggled.connect(self.long_lineEdit.setEnabled) + self.brightness_horizontalSlider.valueChanged.connect(self.brightness_spinBox.setValue) + self.brightness_spinBox.valueChanged.connect(self.brightness_horizontalSlider.setValue) + self.contrast_horizontalSlider.valueChanged.connect(self.contrast_spinBox.setValue) + self.contrast_spinBox.valueChanged.connect(self.contrast_horizontalSlider.setValue) + self.resize_Slider.valueChanged.connect(self.resize_spinBox.setValue) + self.jpg_quality_Slider.valueChanged.connect(self.jpg_quality_spinBox.setValue) + self.jpg_quality_spinBox.valueChanged.connect(self.jpg_quality_Slider.setValue) + self.resize_spinBox.valueChanged.connect(self.resize_Slider.setValue) + self.resize_Slider.valueChanged.connect(self.resize_spinBox.setValue) + self.png_quality_Slider.valueChanged.connect(self.png_quality_spinBox.setValue) + self.png_quality_spinBox.valueChanged.connect(self.png_quality_Slider.setValue) self.tabWidget.setCurrentIndex(0) self.font_size_comboBox.setCurrentIndex(2) @@ -498,24 +583,31 @@ class Ui_MainWindow(object): def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"OPTIMA-35", None)) - self.actionInfo.setText(QCoreApplication.translate("MainWindow", u"Info", None)) - self.input_path.setText("") - self.input_path.setPlaceholderText(QCoreApplication.translate("MainWindow", u"Enter input folder", None)) + self.actionInfo.setText(QCoreApplication.translate("MainWindow", u"About", None)) + self.actionPreview.setText(QCoreApplication.translate("MainWindow", u"Preview image", None)) + self.actionAbout.setText(QCoreApplication.translate("MainWindow", u"About", None)) + self.input_folder_button.setText(QCoreApplication.translate("MainWindow", u"input", None)) self.output_path.setText("") self.output_path.setPlaceholderText(QCoreApplication.translate("MainWindow", u"Enter output folder", None)) - self.input_folder_button.setText(QCoreApplication.translate("MainWindow", u"input", None)) + self.input_path.setText("") + self.input_path.setPlaceholderText(QCoreApplication.translate("MainWindow", u"Enter input folder", None)) self.output_folder_button.setText(QCoreApplication.translate("MainWindow", u"output", None)) self.groupBox.setTitle(QCoreApplication.translate("MainWindow", u"Essential group", None)) - self.resize_checkbox.setText(QCoreApplication.translate("MainWindow", u"Resize", None)) - + self.quality_label_2.setText(QCoreApplication.translate("MainWindow", u"Quality", None)) + self.label_11.setText(QCoreApplication.translate("MainWindow", u"Export Format", None)) self.optimize_checkBox.setText(QCoreApplication.translate("MainWindow", u"optimize", None)) + self.quality_label_1.setText(QCoreApplication.translate("MainWindow", u"Quality", None)) + + self.label_13.setText(QCoreApplication.translate("MainWindow", u"Resize", None)) self.groupBox_2.setTitle(QCoreApplication.translate("MainWindow", u"Extra stuff", None)) + self.label_9.setText(QCoreApplication.translate("MainWindow", u"Brightness", None)) + self.label_10.setText(QCoreApplication.translate("MainWindow", u"Contrast", None)) + self.grayscale_checkBox.setText(QCoreApplication.translate("MainWindow", u"Turn image to Black and White", None)) + self.preview_Button.setText(QCoreApplication.translate("MainWindow", u"Preview", None)) + self.groupBox_3.setTitle(QCoreApplication.translate("MainWindow", u"Watermark", None)) self.watermark_lineEdit.setText("") self.watermark_lineEdit.setPlaceholderText(QCoreApplication.translate("MainWindow", u"Enter Watermark", None)) - self.brightness_checkbox.setText(QCoreApplication.translate("MainWindow", u"Brightness", None)) - self.grayscale_checkBox.setText(QCoreApplication.translate("MainWindow", u"Grayscale", None)) - self.watermark_checkbox.setText(QCoreApplication.translate("MainWindow", u"Watermark", None)) - self.contrast_checkbox.setText(QCoreApplication.translate("MainWindow", u"Contrast", None)) + self.label_12.setText(QCoreApplication.translate("MainWindow", u"Size", None)) self.font_size_comboBox.setItemText(0, QCoreApplication.translate("MainWindow", u"Tiny", None)) self.font_size_comboBox.setItemText(1, QCoreApplication.translate("MainWindow", u"Small", None)) self.font_size_comboBox.setItemText(2, QCoreApplication.translate("MainWindow", u"Normal", None)) @@ -554,6 +646,7 @@ class Ui_MainWindow(object): self.date_groupBox.setTitle(QCoreApplication.translate("MainWindow", u"Optional", None)) self.add_date_checkBox.setText(QCoreApplication.translate("MainWindow", u"add date", None)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), QCoreApplication.translate("MainWindow", u"EXIF", None)) - self.menuInfo.setTitle(QCoreApplication.translate("MainWindow", u"Info", None)) + self.menuInfo.setTitle(QCoreApplication.translate("MainWindow", u"Settings", None)) + self.menuHelp.setTitle(QCoreApplication.translate("MainWindow", u"Help", None)) # retranslateUi