diff --git a/src/OptimaLab35/mainWindow.py b/src/OptimaLab35/mainWindow.py
index 6e715be..5f5fe58 100644
--- a/src/OptimaLab35/mainWindow.py
+++ b/src/OptimaLab35/mainWindow.py
@@ -1,31 +1,42 @@
import os
from datetime import datetime
-
from optima35.core import OptimaManager
-from PySide6 import QtCore, QtWidgets
-from PySide6.QtCore import (
- QDate,
- QObject,
- QRegularExpression,
- QRunnable,
- Qt,
- QThreadPool,
- Signal,
-)
-from PySide6.QtGui import QIcon, QRegularExpressionValidator
-from PySide6.QtWidgets import QApplication, QFileDialog, QMainWindow, QMessageBox
from OptimaLab35 import __version__
+from .const import (
+ APPLICATION_NAME,
+ CONFIG_BASE_PATH
+)
-from .const import APPLICATION_NAME, CONFIG_BASE_PATH
+from .ui import resources_rc
from .previewWindow import PreviewWindow
from .settingsWindow import SettingsWindow
-from .ui import resources_rc
-from .ui.exif_handler_window import ExifEditor
-from .ui.main_window import Ui_MainWindow
-from .ui.simple_dialog import SimpleDialog # Import the SimpleDialog class
-from .utils.utility import Utilities
+from .utils.utility import Utilities
+from .ui.main_window import Ui_MainWindow
+from .ui.exif_handler_window import ExifEditor
+from .ui.simple_dialog import SimpleDialog # Import the SimpleDialog class
+
+from PySide6 import QtWidgets, QtCore
+
+from PySide6.QtCore import (
+ QRunnable,
+ QThreadPool,
+ Signal,
+ QObject,
+ QRegularExpression,
+ Qt,
+ QDate
+)
+
+from PySide6.QtWidgets import (
+ QMessageBox,
+ QApplication,
+ QMainWindow,
+ QFileDialog
+)
+
+from PySide6.QtGui import QRegularExpressionValidator, QIcon
class OptimaLab35(QMainWindow, Ui_MainWindow):
def __init__(self):
@@ -35,7 +46,7 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
self.o = OptimaManager()
self.u = Utilities(os.path.expanduser(CONFIG_BASE_PATH))
self.app_settings = self.u.load_settings()
- self.thread_pool = QThreadPool() # multi thread ChatGPT
+ self.thread_pool = QThreadPool() # multi thread ChatGPT
# Initiate internal object
self.exif_file = os.path.expanduser(f"{CONFIG_BASE_PATH}/exif.yaml")
self.available_exif_data = None
@@ -87,7 +98,6 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
self.ui.lat_lineEdit.setValidator(validator)
self.ui.long_lineEdit.setValidator(validator)
self.ui.dateEdit.setDate(QDate.currentDate())
-
# UI related function, changing parts, open, etc.
def open_preview_window(self):
self.preview_window = PreviewWindow()
@@ -108,7 +118,7 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
def info_window(self):
info_text = f"""
{self.name} v{self.version}
- (C) 2024-2026 Mr Finchum aka CodeByMrFinchum
+ (C) 2024-2025 Mr Finchum aka CodeByMrFinchum
{self.name} is a GUI for {self.o.name} (v{self.o.version}), enhancing its functionality with a user-friendly interface for efficient image and metadata management.
Features:
@@ -175,12 +185,8 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
filtered.append(stripped)
# ignore anything else
# Sort: NA first, then valid times ascending
- return sorted(
- filtered,
- key=lambda x: (0, 0)
- if (x is None or str(x).strip().upper() in {"NA"})
- else (1, self.parse_time(x)),
- )
+ return sorted(filtered, key=lambda x: (0, 0) if (x is None or str(x).strip().upper() in {"NA"})
+ else (1, self.parse_time(x)))
def sort_dict_of_lists(self, input_dict):
# Partily ChatGPT
@@ -198,9 +204,7 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
elif all(isinstance(x, str) for x in lst):
sorted_dict[key] = sorted(
lst,
- key=lambda x: (0, x.lower())
- if str(x).lower() == "na"
- else (1, str(x).lower()),
+ key=lambda x: (0, x.lower()) if str(x).lower() == "na" else (1, str(x).lower())
)
return sorted_dict
@@ -242,29 +246,29 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
self.populate_comboboxes(combo_mapping)
def update_quality_options(self):
- """Update visibility of quality settings based on selected format."""
- # Partly ChatGPT
- selected_format = self.ui.image_type.currentText()
- # Hide all quality settings
- self.ui.png_quality_spinBox.setVisible(False)
- self.ui.jpg_quality_spinBox.setVisible(False)
- self.ui.jpg_quality_Slider.setVisible(False)
- self.ui.png_quality_Slider.setVisible(False)
- self.ui.quality_label_1.setVisible(False)
- self.ui.quality_label_2.setVisible(False)
- # Show relevant settings
- if selected_format == "jpg":
- self.ui.jpg_quality_spinBox.setVisible(True)
- self.ui.jpg_quality_Slider.setVisible(True)
- self.ui.quality_label_1.setVisible(True)
- elif selected_format == "webp":
- self.ui.jpg_quality_spinBox.setVisible(True)
- self.ui.jpg_quality_Slider.setVisible(True)
- self.ui.quality_label_1.setVisible(True)
- elif selected_format == "png":
- self.ui.png_quality_spinBox.setVisible(True)
- self.ui.png_quality_Slider.setVisible(True)
- self.ui.quality_label_2.setVisible(True)
+ """Update visibility of quality settings based on selected format."""
+ # Partly ChatGPT
+ selected_format = self.ui.image_type.currentText()
+ # Hide all quality settings
+ self.ui.png_quality_spinBox.setVisible(False)
+ self.ui.jpg_quality_spinBox.setVisible(False)
+ self.ui.jpg_quality_Slider.setVisible(False)
+ self.ui.png_quality_Slider.setVisible(False)
+ self.ui.quality_label_1.setVisible(False)
+ self.ui.quality_label_2.setVisible(False)
+ # Show relevant settings
+ if selected_format == "jpg":
+ self.ui.jpg_quality_spinBox.setVisible(True)
+ self.ui.jpg_quality_Slider.setVisible(True)
+ self.ui.quality_label_1.setVisible(True)
+ elif selected_format == "webp":
+ self.ui.jpg_quality_spinBox.setVisible(True)
+ self.ui.jpg_quality_Slider.setVisible(True)
+ self.ui.quality_label_1.setVisible(True)
+ elif selected_format == "png":
+ self.ui.png_quality_spinBox.setVisible(True)
+ self.ui.png_quality_Slider.setVisible(True)
+ self.ui.quality_label_2.setVisible(True)
def browse_input_folder(self):
folder = QFileDialog.getExistingDirectory(self, "Select Input Folder")
@@ -276,7 +280,7 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
if folder:
self.ui.output_path.setText(folder)
- def change_statusbar(self, msg, timeout=500):
+ def change_statusbar(self, msg, timeout = 500):
self.ui.statusBar.showMessage(msg, timeout)
# Core functions
@@ -287,9 +291,7 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
def image_list_from_folder(self, path):
image_files = [
- f
- for f in os.listdir(path)
- if f.lower().endswith((".png", ".jpg", ".jpeg", ".webp"))
+ f for f in os.listdir(path) if f.lower().endswith((".png", ".jpg", ".jpeg", ".webp"))
]
image_files.sort()
return image_files
@@ -305,17 +307,11 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
if process == "image":
if not input_folder or not output_folder:
- QMessageBox.warning(
- self, "Warning", "Input or output folder not selected"
- )
+ QMessageBox.warning(self, "Warning", "Input or output folder not selected")
return False
if not input_folder_valid or not output_folder_valid:
- QMessageBox.warning(
- self,
- "Warning",
- f"Input location {input_folder_valid}\nOutput folder {output_folder_valid}...",
- )
+ QMessageBox.warning(self, "Warning", f"Input location {input_folder_valid}\nOutput folder {output_folder_valid}...")
return False
if len(self.image_list_from_folder(output_folder)) != 0:
@@ -330,6 +326,7 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
return False
elif process == "exif":
+
if not input_folder:
QMessageBox.warning(self, "Warning", "Input not selected")
return False
@@ -345,19 +342,15 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
if reply == QMessageBox.No:
return False
- if not input_folder_valid:
- QMessageBox.warning(
- self, "Warning", f"Input location {input_folder_valid}"
- )
+ if not input_folder_valid :
+ QMessageBox.warning(self, "Warning", f"Input location {input_folder_valid}")
return False
else:
print("Something went wrong")
if len(image_list) == 0:
- QMessageBox.warning(
- self, "Warning", "Selected folder has no supported files."
- )
+ QMessageBox.warning(self, "Warning", "Selected folder has no supported files.")
return False
return True
@@ -376,9 +369,7 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
image_list = self.image_list_from_folder(self.settings["input_folder"])
# Create a worker ChatGPT
- worker = ImageProcessorRunnable(
- image_list, self.settings, self.handle_qprogressbar
- )
+ worker = ImageProcessorRunnable(image_list, self.settings, self.handle_qprogressbar)
worker.signals.finished.connect(self.on_processing_finished)
# Start worker in thread pool ChatGPT
self.thread_pool.start(worker)
@@ -396,13 +387,13 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
i = 1
for image_file in image_files:
+
input_path = os.path.join(input_folder, image_file)
self.o.insert_exif_to_image(
- exif_dict=self.settings["user_selected_exif"],
- image_path=input_path,
- gps=self.settings["gps"],
- )
+ exif_dict = self.settings["user_selected_exif"],
+ image_path = input_path,
+ gps = self.settings["gps"])
self.change_statusbar(image_file, 100)
self.handle_qprogressbar(int((i / len(image_files)) * 100))
i += 1
@@ -424,11 +415,7 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
image_list = self.image_list_from_folder(self.settings["input_folder"])
print(image_list)
if not self.control_ending(image_list):
- QMessageBox.warning(
- self,
- "Warning",
- f"Error: one or more filenames do not end on a number.\nCan not adjust time",
- )
+ QMessageBox.warning(self, "Warning", f"Error: one or more filenames do not end on a number.\nCan not adjust time")
self.toggle_buttons(True)
return
@@ -437,19 +424,19 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
self.toggle_buttons(True)
QMessageBox.information(self, "Information", "Finished")
- def get_checkbox_value(self, checkbox, default=None):
+ def get_checkbox_value(self, checkbox, default = None):
"""Helper function to get the value of a checkbox or a default value."""
return checkbox.isChecked() if checkbox else default
- def get_spinbox_value(self, spinbox, default=None):
+ def get_spinbox_value(self, spinbox, default = None):
"""Helper function to get the value of a spinbox and handle empty input."""
return int(spinbox.text()) if spinbox.text() else default
- def get_combobox_value(self, combobox, default=None):
+ def get_combobox_value(self, combobox, default = None):
"""Helper function to get the value of a combobox."""
return combobox.currentIndex() + 1 if combobox.currentIndex() != -1 else default
- def get_text_value(self, lineedit, default=None):
+ def get_text_value(self, lineedit, default = None):
"""Helper function to get the value of a text input field."""
return lineedit.text() if lineedit.text() else default
@@ -477,21 +464,12 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
user_data["lens"] = self.ui.lens_comboBox.currentText()
user_data["iso"] = self.ui.iso_comboBox.currentText()
lab_info = self.add_laboratory_info()
- user_data["image_description"] = (
- f"{self.ui.image_description_comboBox.currentText()} {lab_info}"
- )
+ user_data["image_description"] = f"{self.ui.image_description_comboBox.currentText()} {lab_info}"
user_data["artist"] = self.ui.artist_comboBox.currentText()
user_data["copyright_info"] = self.ui.copyright_info_comboBox.currentText()
- user_data["software"] = (
- f"{self.name} {self.version} with {self.o.name} {self.o.version}"
- )
- if (
- int(self.ui.contrast_spinBox.text()) != 0
- or int(self.ui.brightness_spinBox.text()) != 0
- ):
- user_data["user_comment"] = (
- f"{self.ui.user_comment_comboBox.currentText()}, contrast: {self.ui.contrast_spinBox.text()}, brightness: {self.ui.brightness_spinBox.text()}"
- )
+ user_data["software"] = f"{self.name} {self.version} with {self.o.name} {self.o.version}"
+ if int(self.ui.contrast_spinBox.text()) != 0 or int(self.ui.brightness_spinBox.text()) != 0:
+ user_data["user_comment"] = f"{self.ui.user_comment_comboBox.currentText()}, contrast: {self.ui.contrast_spinBox.text()}, brightness: {self.ui.brightness_spinBox.text()}"
else:
user_data["user_comment"] = self.ui.user_comment_comboBox.currentText()
@@ -499,18 +477,13 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
def get_selected_exif(self):
"""Collect selected EXIF data and handle date and GPS if necessary."""
- selected_exif = (
- self.collect_selected_exif() if self.ui.exif_checkbox.isChecked() else None
- )
+ selected_exif = self.collect_selected_exif() if self.ui.exif_checkbox.isChecked() else None
if selected_exif:
if self.ui.add_date_checkBox.isChecked():
selected_exif["date_time_original"] = self.get_date()
if self.ui.gps_checkBox.isChecked():
try:
- self.settings["gps"] = [
- float(self.ui.lat_lineEdit.text()),
- float(self.ui.long_lineEdit.text()),
- ]
+ self.settings["gps"] = [float(self.ui.lat_lineEdit.text()), float(self.ui.long_lineEdit.text())]
except ValueError as e:
self.settings["gps"] = "Wrong gps data"
else:
@@ -530,47 +503,22 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
self.settings["output_folder"] = self.get_text_value(self.ui.output_path)
self.settings["file_format"] = self.ui.image_type.currentText()
# Quality
- self.settings["jpg_quality"] = self.get_spinbox_value(
- self.ui.jpg_quality_spinBox
- )
- self.settings["png_compression"] = self.get_spinbox_value(
- self.ui.png_quality_spinBox
- )
- self.settings["resize"] = (
- int(self.ui.resize_spinBox.text())
- if self.ui.resize_spinBox.text() != "100"
- else None
- )
+ self.settings["jpg_quality"] = self.get_spinbox_value(self.ui.jpg_quality_spinBox)
+ self.settings["png_compression"] = self.get_spinbox_value(self.ui.png_quality_spinBox)
+ self.settings["resize"] = int(self.ui.resize_spinBox.text()) if self.ui.resize_spinBox.text() != "100" else None
self.settings["optimize"] = self.get_checkbox_value(self.ui.optimize_checkBox)
# Changes for image
- self.settings["brightness"] = (
- int(self.ui.brightness_spinBox.text())
- if self.ui.brightness_spinBox.text() != "0"
- else None
- )
- self.settings["contrast"] = (
- int(self.ui.contrast_spinBox.text())
- if self.ui.contrast_spinBox.text() != "0"
- else None
- )
+ self.settings["brightness"] = int(self.ui.brightness_spinBox.text()) if self.ui.brightness_spinBox.text() != "0" else None
+ self.settings["contrast"] = int(self.ui.contrast_spinBox.text()) if self.ui.contrast_spinBox.text() != "0" else None
self.settings["grayscale"] = self.get_checkbox_value(self.ui.grayscale_checkBox)
# Watermark
self.settings["font_size"] = self.get_combobox_value(self.ui.font_size_comboBox)
self.settings["watermark"] = self.get_text_value(self.ui.watermark_lineEdit)
# Naming
- new_name = (
- self.get_text_value(self.ui.filename, False)
- if self.ui.rename_checkbox.isChecked()
- else False
- )
- if isinstance(new_name, str):
- new_name = new_name.replace(" ", "_")
+ new_name = self.get_text_value(self.ui.filename, False) if self.ui.rename_checkbox.isChecked() else False
+ if isinstance(new_name, str): new_name = new_name.replace(" ", "_")
self.settings["new_file_names"] = new_name
- self.settings["invert_image_order"] = (
- self.get_checkbox_value(self.ui.revert_checkbox)
- if new_name is not False
- else None
- )
+ self.settings["invert_image_order"] = self.get_checkbox_value(self.ui.revert_checkbox) if new_name is not False else None
# Handle EXIF data selection
self.settings["copy_exif"] = self.get_checkbox_value(self.ui.exif_copy_checkBox)
self.settings["own_exif"] = self.get_checkbox_value(self.ui.exif_checkbox)
@@ -602,13 +550,11 @@ class OptimaLab35(QMainWindow, Ui_MainWindow):
QApplication.closeAllWindows()
event.accept()
-
class WorkerSignals(QObject):
# ChatGPT
progress = Signal(int)
finished = Signal()
-
class ImageProcessorRunnable(QRunnable):
# ChatGPT gave rough function layout
def __init__(self, image_files, settings, progress_callback):
@@ -627,32 +573,27 @@ class ImageProcessorRunnable(QRunnable):
for i, image_file in enumerate(self.image_files, start=1):
input_path = os.path.join(input_folder, image_file)
if self.settings["new_file_names"] != False:
- image_name = self.u.append_number_to_name(
- self.settings["new_file_names"],
- i,
- len(self.image_files),
- self.settings["invert_image_order"],
- )
+ image_name = self.u.append_number_to_name(self.settings["new_file_names"], i, len(self.image_files), self.settings["invert_image_order"])
else:
image_name = os.path.splitext(image_file)[0]
output_path = os.path.join(output_folder, image_name)
self.o.process_and_save_image(
- image_input_file=input_path,
- image_output_file=output_path,
- file_type=self.settings["file_format"],
- quality=self.settings["jpg_quality"],
- compressing=self.settings["png_compression"],
- optimize=self.settings["optimize"],
- resize=self.settings["resize"],
- watermark=self.settings["watermark"],
- font_size=self.settings["font_size"],
- grayscale=self.settings["grayscale"],
- brightness=self.settings["brightness"],
- contrast=self.settings["contrast"],
- dict_for_exif=self.settings["user_selected_exif"],
- gps=self.settings["gps"],
- copy_exif=self.settings["copy_exif"],
+ image_input_file = input_path,
+ image_output_file = output_path,
+ file_type = self.settings["file_format"],
+ quality = self.settings["jpg_quality"],
+ compressing = self.settings["png_compression"],
+ optimize = self.settings["optimize"],
+ resize = self.settings["resize"],
+ watermark = self.settings["watermark"],
+ font_size = self.settings["font_size"],
+ grayscale = self.settings["grayscale"],
+ brightness = self.settings["brightness"],
+ contrast = self.settings["contrast"],
+ dict_for_exif = self.settings["user_selected_exif"],
+ gps = self.settings["gps"],
+ copy_exif = self.settings["copy_exif"]
)
self.signals.progress.emit(int((i / len(self.image_files)) * 100))
diff --git a/src/OptimaLab35/settingsWindow.py b/src/OptimaLab35/settingsWindow.py
index c4016e4..ffbd263 100644
--- a/src/OptimaLab35/settingsWindow.py
+++ b/src/OptimaLab35/settingsWindow.py
@@ -1,20 +1,32 @@
-import os
import sys
+import os
from datetime import datetime
-
from PyPiUpdater import PyPiUpdater
-from PySide6 import QtCore, QtWidgets
-from PySide6.QtCore import QRegularExpression, Qt, QTimer
-from PySide6.QtGui import QIcon
-from PySide6.QtWidgets import QApplication, QMainWindow, QMessageBox
from OptimaLab35 import __version__
+from .const import (
+ CONFIG_BASE_PATH
+)
-from .const import CONFIG_BASE_PATH
from .ui import resources_rc
-from .ui.settings_window import Ui_Settings_Window
from .utils.utility import Utilities
+from .ui.settings_window import Ui_Settings_Window
+from PySide6 import QtWidgets, QtCore
+
+from PySide6.QtCore import (
+ QRegularExpression,
+ Qt,
+ QTimer
+)
+
+from PySide6.QtWidgets import (
+ QMessageBox,
+ QApplication,
+ QMainWindow
+)
+
+from PySide6.QtGui import QIcon
class SettingsWindow(QMainWindow, Ui_Settings_Window):
# Mixture of code by me, code/functions refactored by ChatGPT and code directly from ChatGPT
@@ -33,12 +45,8 @@ class SettingsWindow(QMainWindow, Ui_Settings_Window):
self.optimalab35_localversion = optimalab35_localversion
self.optima35_localversion = optima35_localversion
# Create PyPiUpdater instances
- self.ppu_ol35 = PyPiUpdater(
- "OptimaLab35", self.optimalab35_localversion, self.update_log_file
- )
- self.ppu_o35 = PyPiUpdater(
- "optima35", self.optima35_localversion, self.update_log_file
- )
+ self.ppu_ol35 = PyPiUpdater("OptimaLab35", self.optimalab35_localversion, self.update_log_file)
+ self.ppu_o35 = PyPiUpdater("optima35", self.optima35_localversion, self.update_log_file)
self.ol35_last_state = self.ppu_ol35.get_last_state()
self.o35_last_state = self.ppu_o35.get_last_state()
# Track which packages need an update
@@ -60,9 +68,7 @@ class SettingsWindow(QMainWindow, Ui_Settings_Window):
# Connect buttons to functions
self.ui.check_for_update_Button.clicked.connect(self.check_for_updates)
self.ui.update_and_restart_Button.clicked.connect(self.update_and_restart)
- self.ui.label_last_check.setText(
- f"Last check: {self.time_to_string(self.ol35_last_state[0])}"
- )
+ self.ui.label_last_check.setText(f"Last check: {self.time_to_string(self.ol35_last_state[0])}")
self.ui.dev_widget.setVisible(False)
# Timer for long press detection
@@ -73,22 +79,20 @@ class SettingsWindow(QMainWindow, Ui_Settings_Window):
# Connect button press/release
self.ui.check_for_update_Button.pressed.connect(self.start_long_press)
self.ui.check_for_update_Button.released.connect(self.cancel_long_press)
- self.ui.label_5.setText(
- 'Changelog'
- )
+ self.ui.label_5.setText('Changelog')
self.ui.label_5.setOpenExternalLinks(True)
- # settings related
+ #settings related
self.load_settings_into_ui()
self.ui.reset_exif_Button.clicked.connect(self.ask_reset_exif)
self.ui.save_and_close_Button.clicked.connect(self.save_and_close)
self.ui.save_and_restart_Button.clicked.connect(self.save_and_restart)
- if os.name == "nt": # Disable restart app when windows.
+ if os.name == "nt": # Disable restart app when windows.
self.ui.save_and_restart_Button.setVisible(False)
self.ui.restart_checkBox.setChecked(False)
self.ui.restart_checkBox.setVisible(False)
- # setting related
+# setting related
def load_settings_into_ui(self):
"""Loads the settings into the UI elements."""
settings = self.app_settings
@@ -97,9 +101,7 @@ class SettingsWindow(QMainWindow, Ui_Settings_Window):
pkg_available = settings["theme"]["theme_pkg"]
if pkg_available:
- index = self.ui.theme_selection_comboBox.findText(
- theme_mode, QtCore.Qt.MatchFlag.MatchExactly
- )
+ index = self.ui.theme_selection_comboBox.findText(theme_mode, QtCore.Qt.MatchFlag.MatchExactly)
if index != -1:
self.ui.theme_selection_comboBox.setCurrentIndex(index)
self.ui.enable_theme_checkBox.setChecked(use_custom_theme)
@@ -128,12 +130,8 @@ class SettingsWindow(QMainWindow, Ui_Settings_Window):
self.ui.install_pkg_Button.setText("Try again?")
def save_settings(self):
- self.app_settings["theme"]["mode"] = (
- self.ui.theme_selection_comboBox.currentText()
- )
- self.app_settings["theme"]["use_custom_theme"] = (
- self.ui.enable_theme_checkBox.isChecked()
- )
+ self.app_settings["theme"]["mode"] = self.ui.theme_selection_comboBox.currentText()
+ self.app_settings["theme"]["use_custom_theme"] = self.ui.enable_theme_checkBox.isChecked()
self.u.save_settings(self.app_settings)
def save_and_close(self):
@@ -145,9 +143,7 @@ class SettingsWindow(QMainWindow, Ui_Settings_Window):
msg.setIcon(QMessageBox.Icon.Question)
msg.setWindowTitle("Confirm Reset")
msg.setText("Are you sure you want to restart the app?")
- msg.setStandardButtons(
- QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No
- )
+ msg.setStandardButtons(QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No)
# Show the message box and wait for the user's response
response = msg.exec()
@@ -166,9 +162,7 @@ class SettingsWindow(QMainWindow, Ui_Settings_Window):
msg.setIcon(QMessageBox.Icon.Question)
msg.setWindowTitle("Confirm Reset")
msg.setText("Are you sure you want to reset the EXIF options to default?")
- msg.setStandardButtons(
- QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No
- )
+ msg.setStandardButtons(QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No)
# Show the message box and wait for the user's response
response = msg.exec()
@@ -179,7 +173,7 @@ class SettingsWindow(QMainWindow, Ui_Settings_Window):
else:
pass # Do nothing if "No" is selected
- # update related parts
+# update related parts
def start_long_press(self):
"""Start the timer when button is pressed."""
# brave AI
@@ -220,9 +214,7 @@ class SettingsWindow(QMainWindow, Ui_Settings_Window):
def local_update(self):
dist_folder = os.path.expanduser("~/.config/OptimaLab35/dist/")
- packages_to_update = [
- pkg for pkg, update in self.updates_available.items() if update
- ]
+ packages_to_update = [pkg for pkg, update in self.updates_available.items() if update]
if not packages_to_update:
QMessageBox.information(self, "Update", "No updates available.")
@@ -251,9 +243,7 @@ class SettingsWindow(QMainWindow, Ui_Settings_Window):
elif package == "optima35":
pkg_info = self.ppu_o35.update_from_local(dist_folder)
- update_results.append(
- f"{package}: {'Success' if pkg_info[0] else 'Failed'}\n{pkg_info[1]}"
- )
+ update_results.append(f"{package}: {'Success' if pkg_info[0] else 'Failed'}\n{pkg_info[1]}")
# Show summary of updates
# Show update completion message
@@ -312,9 +302,7 @@ class SettingsWindow(QMainWindow, Ui_Settings_Window):
def update_and_restart(self):
"""Update selected packages and restart the application."""
- packages_to_update = [
- pkg for pkg, update in self.updates_available.items() if update
- ]
+ packages_to_update = [pkg for pkg, update in self.updates_available.items() if update]
if not packages_to_update:
QMessageBox.information(self, "Update", "No updates available.")
@@ -343,9 +331,7 @@ class SettingsWindow(QMainWindow, Ui_Settings_Window):
elif package == "optima35":
pkg_info = self.ppu_o35.update_package()
- update_results.append(
- f"{package}: {'Success' if pkg_info[0] else 'Failed'}\n{pkg_info[1]}"
- )
+ update_results.append(f"{package}: {'Success' if pkg_info[0] else 'Failed'}\n{pkg_info[1]}")
# Show summary of updates
# Show update completion message