Button and function to insert exif direcly into file.

This commit is contained in:
Mr Finchum 2025-01-12 16:59:41 +01:00
parent 6ff262d320
commit 9f0758f415
3 changed files with 388 additions and 269 deletions

View file

@ -32,7 +32,7 @@ from PySide6.QtWidgets import (
QProgressBar,
)
from PySide6.QtGui import QPixmap
from PySide6.QtGui import QPixmap, QIcon
class PreviewWindow(QMainWindow, Ui_Preview_Window):
values_selected = Signal(int, int, bool)
@ -108,14 +108,13 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
# Instantiate the second window
self.preview_window = PreviewWindow()
# Connect button to open the second window
def open_preview_window(self):
self.preview_window.values_selected.connect(self.update_values)
self.preview_window.show()
def update_values(self, value1, value2, checkbox_state):
# Update main window's widgets with the received values
# ChatGPT
self.ui.brightness_spinBox.setValue(value1)
self.ui.contrast_spinBox.setValue(value2)
self.ui.grayscale_checkBox.setChecked(checkbox_state)
@ -129,6 +128,7 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
self.ui.input_folder_button.clicked.connect(self._browse_input_folder)
self.ui.output_folder_button.clicked.connect(self._browse_output_folder)
self.ui.start_button.clicked.connect(self._start_process)
self.ui.insert_exif_Button.clicked.connect(self._start_insert_exif)
self.ui.image_type.currentIndexChanged.connect(self._update_quality_options)
self.ui.exif_checkbox.stateChanged.connect(
@ -154,6 +154,7 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
# ChatGPT, mainly
info_text = f"""
<h3>{self.name} v{self.version}</h3>
<p>(C) 2024-2025 Mr. Finchum aka CodeByMrFinchum</p>
<p>{self.name} is a GUI for <b>{self.o.name}</b> (v{self.o.version}).</p>
<p> Both projects are in active development, for more details, visit:</p>
<ul>
@ -216,6 +217,9 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
def _toggle_buttons(self, state):
self.ui.start_button.setEnabled(state)
if self.ui.exif_checkbox.isChecked():
self.ui.insert_exif_Button.setEnabled(state)
def _process_images(self, image_files):
input_folder = self.settings["input_folder"]
output_folder = self.settings["output_folder"]
@ -250,6 +254,65 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
self.ui.progressBar.setValue(0)
def _insert_exif(self, image_files):
input_folder = self.settings["input_folder"]
i = 1
for image_file in image_files:
input_path = os.path.join(input_folder, image_file)
print(input_path)
self.o.insert_dict_to_image(
exif_dict = self.user_selected_exif,
image_path = input_path,
gps = self.settings["gps"])
self._change_statusbar(image_file, 100)
self._handle_qprogressbar(i, len(image_files))
i += 1
self.ui.progressBar.setValue(0)
def _start_insert_exif(self):
self._toggle_buttons(False)
self._update_settings() # Get all user selected data
input_folder = self.settings["input_folder"]
output_folder = self.settings["output_folder"]
if not input_folder:
QMessageBox.warning(self, "Warning", "Input not selected")
self._toggle_buttons(True)
return
if output_folder:
reply = QMessageBox.question(
self,
"Confirmation",
"Output folder selected, but insert exif is done to images in input folder, Continue?",
QMessageBox.Yes | QMessageBox.No,
)
if reply == QMessageBox.No:
self._toggle_buttons(True)
return
input_folder_valid = os.path.exists(input_folder)
if not input_folder_valid :
QMessageBox.warning(self, "Warning", f"Input location {input_folder_valid}")
self._toggle_buttons(True)
return
image_list = self._image_list_from_folder(input_folder)
if len(image_list) == 0:
QMessageBox.warning(self, "Warning", "Selected folder has no supported files.")
self._toggle_buttons(True)
return
self._insert_exif(image_list)
self._toggle_buttons(True)
QMessageBox.information(self, "Information", "Finished")
def _open_exif_editor(self):
"""Open the EXIF Editor."""
self.exif_editor = ExifEditor(self.available_exif_data)

View file

@ -27,6 +27,7 @@ class Ui_MainWindow(object):
def setupUi(self, MainWindow):
if not MainWindow.objectName():
MainWindow.setObjectName(u"MainWindow")
MainWindow.setWindowModality(Qt.NonModal)
MainWindow.resize(440, 756)
MainWindow.setMinimumSize(QSize(350, 677))
MainWindow.setMaximumSize(QSize(1000, 1000))
@ -54,6 +55,8 @@ class Ui_MainWindow(object):
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.input_folder_button.setMinimumSize(QSize(70, 0))
self.input_folder_button.setFlat(False)
self.gridLayout_5.addWidget(self.input_folder_button, 0, 1, 1, 1)
@ -69,6 +72,7 @@ class Ui_MainWindow(object):
self.output_folder_button = QPushButton(self.folder_group)
self.output_folder_button.setObjectName(u"output_folder_button")
self.output_folder_button.setMinimumSize(QSize(70, 0))
self.gridLayout_5.addWidget(self.output_folder_button, 0, 3, 1, 1)
@ -308,6 +312,12 @@ class Ui_MainWindow(object):
self.horizontalLayout_3.addWidget(self.start_button)
self.insert_exif_Button = QPushButton(self.widget_9)
self.insert_exif_Button.setObjectName(u"insert_exif_Button")
self.insert_exif_Button.setEnabled(False)
self.horizontalLayout_3.addWidget(self.insert_exif_Button)
self.verticalLayout_10.addWidget(self.widget_9)
@ -540,39 +550,40 @@ class Ui_MainWindow(object):
self.menuBar = QMenuBar(MainWindow)
self.menuBar.setObjectName(u"menuBar")
self.menuBar.setGeometry(QRect(0, 0, 440, 27))
self.menuInfo = QMenu(self.menuBar)
self.menuInfo.setObjectName(u"menuInfo")
self.menuSettings = QMenu(self.menuBar)
self.menuSettings.setObjectName(u"menuSettings")
self.menuHelp = QMenu(self.menuBar)
self.menuHelp.setObjectName(u"menuHelp")
MainWindow.setMenuBar(self.menuBar)
self.menuBar.addAction(self.menuInfo.menuAction())
self.menuBar.addAction(self.menuSettings.menuAction())
self.menuBar.addAction(self.menuHelp.menuAction())
self.menuInfo.addAction(self.actionPreview)
self.menuSettings.addAction(self.actionPreview)
self.menuHelp.addAction(self.actionAbout)
self.retranslateUi(MainWindow)
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)
self.jpg_quality_Slider.valueChanged.connect(self.jpg_quality_spinBox.setValue)
self.exif_copy_checkBox.toggled.connect(self.exif_checkbox.setDisabled)
self.exif_checkbox.toggled.connect(self.exif_copy_checkBox.setDisabled)
self.resize_spinBox.valueChanged.connect(self.resize_Slider.setValue)
self.png_quality_spinBox.valueChanged.connect(self.png_quality_Slider.setValue)
self.contrast_horizontalSlider.valueChanged.connect(self.contrast_spinBox.setValue)
self.resize_Slider.valueChanged.connect(self.resize_spinBox.setValue)
self.brightness_horizontalSlider.valueChanged.connect(self.brightness_spinBox.setValue)
self.exif_checkbox.toggled.connect(self.date_groupBox.setEnabled)
self.png_quality_Slider.valueChanged.connect(self.png_quality_spinBox.setValue)
self.gps_checkBox.toggled.connect(self.lat_lineEdit.setEnabled)
self.exif_checkbox.toggled.connect(self.insert_exif_Button.setEnabled)
self.gps_checkBox.toggled.connect(self.long_lineEdit.setEnabled)
self.brightness_spinBox.valueChanged.connect(self.brightness_horizontalSlider.setValue)
self.resize_Slider.valueChanged.connect(self.resize_spinBox.setValue)
self.exif_checkbox.toggled.connect(self.gps_groupBox.setEnabled)
self.contrast_spinBox.valueChanged.connect(self.contrast_horizontalSlider.setValue)
self.exif_checkbox.toggled.connect(self.edit_exif_button.setEnabled)
self.add_date_checkBox.toggled.connect(self.dateEdit.setEnabled)
self.exif_checkbox.toggled.connect(self.date_groupBox.setEnabled)
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)
@ -582,16 +593,16 @@ class Ui_MainWindow(object):
# setupUi
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"OPTIMA-35", None))
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"OptimaLab35", 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.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.output_path.setPlaceholderText(QCoreApplication.translate("MainWindow", u"Output folder", 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.input_path.setPlaceholderText(QCoreApplication.translate("MainWindow", u"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.quality_label_2.setText(QCoreApplication.translate("MainWindow", u"Quality", None))
self.label_11.setText(QCoreApplication.translate("MainWindow", u"Export Format", None))
@ -621,11 +632,12 @@ class Ui_MainWindow(object):
self.filename.setText("")
self.filename.setPlaceholderText(QCoreApplication.translate("MainWindow", u"Enter file name", None))
self.start_button.setText(QCoreApplication.translate("MainWindow", u"Convert", None))
self.insert_exif_Button.setText(QCoreApplication.translate("MainWindow", u"Insert Exif", None))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_1), QCoreApplication.translate("MainWindow", u"Main", None))
self.exif_group.setTitle(QCoreApplication.translate("MainWindow", u"EXIF EXPERIMENTAL", None))
self.exif_checkbox.setText(QCoreApplication.translate("MainWindow", u"own exif", None))
self.exif_copy_checkBox.setText(QCoreApplication.translate("MainWindow", u"copy exif", None))
self.edit_exif_button.setText(QCoreApplication.translate("MainWindow", u"edit exif", None))
self.edit_exif_button.setText(QCoreApplication.translate("MainWindow", u"Edit Exif", None))
self.exif_options_group.setTitle(QCoreApplication.translate("MainWindow", u"Must", None))
self.label_7.setText(QCoreApplication.translate("MainWindow", u"Artist", None))
self.label_4.setText(QCoreApplication.translate("MainWindow", u"ISO", None))
@ -646,7 +658,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"Settings", None))
self.menuSettings.setTitle(QCoreApplication.translate("MainWindow", u"Settings", None))
self.menuHelp.setTitle(QCoreApplication.translate("MainWindow", u"Help", None))
# retranslateUi

View file

@ -2,6 +2,9 @@
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="windowModality">
<enum>Qt::NonModal</enum>
</property>
<property name="geometry">
<rect>
<x>0</x>
@ -23,7 +26,7 @@
</size>
</property>
<property name="windowTitle">
<string>OPTIMA-35</string>
<string>OptimaLab35</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout">
@ -54,8 +57,17 @@
<layout class="QGridLayout" name="gridLayout_5">
<item row="0" column="1">
<widget class="QPushButton" name="input_folder_button">
<property name="minimumSize">
<size>
<width>70</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>input</string>
<string extracomment="Comment?">Input</string>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
@ -65,7 +77,7 @@
<string/>
</property>
<property name="placeholderText">
<string>Enter output folder</string>
<string>Output folder</string>
</property>
</widget>
</item>
@ -75,14 +87,20 @@
<string/>
</property>
<property name="placeholderText">
<string>Enter input folder</string>
<string>Input folder</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QPushButton" name="output_folder_button">
<property name="minimumSize">
<size>
<width>70</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>output</string>
<string>Output</string>
</property>
</widget>
</item>
@ -508,6 +526,16 @@
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="insert_exif_Button">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Insert Exif</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
@ -547,7 +575,7 @@
<bool>false</bool>
</property>
<property name="text">
<string>edit exif</string>
<string>Edit Exif</string>
</property>
</widget>
</item>
@ -798,7 +826,7 @@
<height>27</height>
</rect>
</property>
<widget class="QMenu" name="menuInfo">
<widget class="QMenu" name="menuSettings">
<property name="title">
<string>Settings</string>
</property>
@ -810,7 +838,7 @@
</property>
<addaction name="actionAbout"/>
</widget>
<addaction name="menuInfo"/>
<addaction name="menuSettings"/>
<addaction name="menuHelp"/>
</widget>
<action name="actionInfo">
@ -864,18 +892,18 @@
</hints>
</connection>
<connection>
<sender>exif_checkbox</sender>
<signal>toggled(bool)</signal>
<receiver>exif_copy_checkBox</receiver>
<slot>setDisabled(bool)</slot>
<sender>jpg_quality_Slider</sender>
<signal>valueChanged(int)</signal>
<receiver>jpg_quality_spinBox</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>130</x>
<y>105</y>
<x>218</x>
<y>289</y>
</hint>
<hint type="destinationlabel">
<x>332</x>
<y>105</y>
<x>380</x>
<y>289</y>
</hint>
</hints>
</connection>
@ -895,6 +923,246 @@
</hint>
</hints>
</connection>
<connection>
<sender>exif_checkbox</sender>
<signal>toggled(bool)</signal>
<receiver>exif_copy_checkBox</receiver>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>130</x>
<y>105</y>
</hint>
<hint type="destinationlabel">
<x>332</x>
<y>105</y>
</hint>
</hints>
</connection>
<connection>
<sender>resize_spinBox</sender>
<signal>valueChanged(int)</signal>
<receiver>resize_Slider</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>380</x>
<y>252</y>
</hint>
<hint type="destinationlabel">
<x>218</x>
<y>252</y>
</hint>
</hints>
</connection>
<connection>
<sender>png_quality_spinBox</sender>
<signal>valueChanged(int)</signal>
<receiver>png_quality_Slider</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>380</x>
<y>326</y>
</hint>
<hint type="destinationlabel">
<x>218</x>
<y>326</y>
</hint>
</hints>
</connection>
<connection>
<sender>contrast_horizontalSlider</sender>
<signal>valueChanged(int)</signal>
<receiver>contrast_spinBox</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>187</x>
<y>458</y>
</hint>
<hint type="destinationlabel">
<x>378</x>
<y>458</y>
</hint>
</hints>
</connection>
<connection>
<sender>resize_Slider</sender>
<signal>valueChanged(int)</signal>
<receiver>resize_spinBox</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>218</x>
<y>252</y>
</hint>
<hint type="destinationlabel">
<x>380</x>
<y>252</y>
</hint>
</hints>
</connection>
<connection>
<sender>brightness_horizontalSlider</sender>
<signal>valueChanged(int)</signal>
<receiver>brightness_spinBox</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>187</x>
<y>393</y>
</hint>
<hint type="destinationlabel">
<x>378</x>
<y>393</y>
</hint>
</hints>
</connection>
<connection>
<sender>exif_checkbox</sender>
<signal>toggled(bool)</signal>
<receiver>date_groupBox</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>126</x>
<y>103</y>
</hint>
<hint type="destinationlabel">
<x>224</x>
<y>589</y>
</hint>
</hints>
</connection>
<connection>
<sender>png_quality_Slider</sender>
<signal>valueChanged(int)</signal>
<receiver>png_quality_spinBox</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>218</x>
<y>326</y>
</hint>
<hint type="destinationlabel">
<x>380</x>
<y>326</y>
</hint>
</hints>
</connection>
<connection>
<sender>gps_checkBox</sender>
<signal>toggled(bool)</signal>
<receiver>lat_lineEdit</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>72</x>
<y>547</y>
</hint>
<hint type="destinationlabel">
<x>192</x>
<y>547</y>
</hint>
</hints>
</connection>
<connection>
<sender>exif_checkbox</sender>
<signal>toggled(bool)</signal>
<receiver>insert_exif_Button</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>92</x>
<y>130</y>
</hint>
<hint type="destinationlabel">
<x>369</x>
<y>684</y>
</hint>
</hints>
</connection>
<connection>
<sender>gps_checkBox</sender>
<signal>toggled(bool)</signal>
<receiver>long_lineEdit</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>72</x>
<y>547</y>
</hint>
<hint type="destinationlabel">
<x>344</x>
<y>547</y>
</hint>
</hints>
</connection>
<connection>
<sender>brightness_spinBox</sender>
<signal>valueChanged(int)</signal>
<receiver>brightness_horizontalSlider</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>378</x>
<y>393</y>
</hint>
<hint type="destinationlabel">
<x>187</x>
<y>393</y>
</hint>
</hints>
</connection>
<connection>
<sender>resize_Slider</sender>
<signal>valueChanged(int)</signal>
<receiver>resize_spinBox</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>218</x>
<y>252</y>
</hint>
<hint type="destinationlabel">
<x>380</x>
<y>252</y>
</hint>
</hints>
</connection>
<connection>
<sender>exif_checkbox</sender>
<signal>toggled(bool)</signal>
<receiver>gps_groupBox</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>94</x>
<y>103</y>
</hint>
<hint type="destinationlabel">
<x>224</x>
<y>535</y>
</hint>
</hints>
</connection>
<connection>
<sender>contrast_spinBox</sender>
<signal>valueChanged(int)</signal>
<receiver>contrast_horizontalSlider</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>378</x>
<y>458</y>
</hint>
<hint type="destinationlabel">
<x>187</x>
<y>458</y>
</hint>
</hints>
</connection>
<connection>
<sender>exif_checkbox</sender>
<signal>toggled(bool)</signal>
@ -927,166 +1195,6 @@
</hint>
</hints>
</connection>
<connection>
<sender>exif_checkbox</sender>
<signal>toggled(bool)</signal>
<receiver>date_groupBox</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>126</x>
<y>103</y>
</hint>
<hint type="destinationlabel">
<x>224</x>
<y>589</y>
</hint>
</hints>
</connection>
<connection>
<sender>exif_checkbox</sender>
<signal>toggled(bool)</signal>
<receiver>gps_groupBox</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>94</x>
<y>103</y>
</hint>
<hint type="destinationlabel">
<x>224</x>
<y>535</y>
</hint>
</hints>
</connection>
<connection>
<sender>gps_checkBox</sender>
<signal>toggled(bool)</signal>
<receiver>lat_lineEdit</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>72</x>
<y>547</y>
</hint>
<hint type="destinationlabel">
<x>192</x>
<y>547</y>
</hint>
</hints>
</connection>
<connection>
<sender>gps_checkBox</sender>
<signal>toggled(bool)</signal>
<receiver>long_lineEdit</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>72</x>
<y>547</y>
</hint>
<hint type="destinationlabel">
<x>344</x>
<y>547</y>
</hint>
</hints>
</connection>
<connection>
<sender>brightness_horizontalSlider</sender>
<signal>valueChanged(int)</signal>
<receiver>brightness_spinBox</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>187</x>
<y>393</y>
</hint>
<hint type="destinationlabel">
<x>378</x>
<y>393</y>
</hint>
</hints>
</connection>
<connection>
<sender>brightness_spinBox</sender>
<signal>valueChanged(int)</signal>
<receiver>brightness_horizontalSlider</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>378</x>
<y>393</y>
</hint>
<hint type="destinationlabel">
<x>187</x>
<y>393</y>
</hint>
</hints>
</connection>
<connection>
<sender>contrast_horizontalSlider</sender>
<signal>valueChanged(int)</signal>
<receiver>contrast_spinBox</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>187</x>
<y>458</y>
</hint>
<hint type="destinationlabel">
<x>378</x>
<y>458</y>
</hint>
</hints>
</connection>
<connection>
<sender>contrast_spinBox</sender>
<signal>valueChanged(int)</signal>
<receiver>contrast_horizontalSlider</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>378</x>
<y>458</y>
</hint>
<hint type="destinationlabel">
<x>187</x>
<y>458</y>
</hint>
</hints>
</connection>
<connection>
<sender>resize_Slider</sender>
<signal>valueChanged(int)</signal>
<receiver>resize_spinBox</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>218</x>
<y>252</y>
</hint>
<hint type="destinationlabel">
<x>380</x>
<y>252</y>
</hint>
</hints>
</connection>
<connection>
<sender>jpg_quality_Slider</sender>
<signal>valueChanged(int)</signal>
<receiver>jpg_quality_spinBox</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>218</x>
<y>289</y>
</hint>
<hint type="destinationlabel">
<x>380</x>
<y>289</y>
</hint>
</hints>
</connection>
<connection>
<sender>jpg_quality_spinBox</sender>
<signal>valueChanged(int)</signal>
@ -1103,69 +1211,5 @@
</hint>
</hints>
</connection>
<connection>
<sender>resize_spinBox</sender>
<signal>valueChanged(int)</signal>
<receiver>resize_Slider</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>380</x>
<y>252</y>
</hint>
<hint type="destinationlabel">
<x>218</x>
<y>252</y>
</hint>
</hints>
</connection>
<connection>
<sender>resize_Slider</sender>
<signal>valueChanged(int)</signal>
<receiver>resize_spinBox</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>218</x>
<y>252</y>
</hint>
<hint type="destinationlabel">
<x>380</x>
<y>252</y>
</hint>
</hints>
</connection>
<connection>
<sender>png_quality_Slider</sender>
<signal>valueChanged(int)</signal>
<receiver>png_quality_spinBox</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>218</x>
<y>326</y>
</hint>
<hint type="destinationlabel">
<x>380</x>
<y>326</y>
</hint>
</hints>
</connection>
<connection>
<sender>png_quality_spinBox</sender>
<signal>valueChanged(int)</signal>
<receiver>png_quality_Slider</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>380</x>
<y>326</y>
</hint>
<hint type="destinationlabel">
<x>218</x>
<y>326</y>
</hint>
</hints>
</connection>
</connections>
</ui>