From 21f1d9fc012dcea18ecbb40ff53b9990aa84f00c Mon Sep 17 00:00:00 2001 From: Mr Finchum Date: Fri, 31 Jan 2025 16:31:20 +0000 Subject: [PATCH 01/39] patch: support for ppu04 ppu = PyPiUpdater 0.4.0 --- CHANGELOG.md | 5 +++++ pyproject.toml | 2 +- src/OptimaLab35/gui.py | 19 +++++++++++++++---- src/OptimaLab35/ui/updater_window.py | 10 +++++----- src/OptimaLab35/ui/updater_window.ui | 2 +- 5 files changed, 27 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bf1de6d..4a5375a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog ## 0.8.x +### 0.8.2: Patch for New PyPiUpdater Version +- Updated to support **PyPiUpdater 0.4.0**. +- Now stores version information locally, preventing an "unknown" state on the first updater launch. + - Users still need to press the **Update** button to verify the latest version, ensuring an internet connection is available. + ### 0.8.1: Fix - Fixed a misspelling of `PyPiUpdater` in the build file, which prevented v0.8.0 from being installed. diff --git a/pyproject.toml b/pyproject.toml index fbfdbfb..a3f237f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,7 +11,7 @@ readme = "pip_README.md" requires-python = ">=3.8" dependencies = [ "optima35>=1.0.0, <2.0.0", - "PyPiUpdater>=0.3.0, <1.0.0", + "PyPiUpdater>=0.4.0, <1.0.0", "pyside6", "PyYAML", ] diff --git a/src/OptimaLab35/gui.py b/src/OptimaLab35/gui.py index e2d9384..6fda769 100644 --- a/src/OptimaLab35/gui.py +++ b/src/OptimaLab35/gui.py @@ -470,7 +470,7 @@ class UpdaterWindow(QMainWindow, Ui_Updater_Window): self.ui.setupUi(self) from PyPiUpdater import PyPiUpdater # Update log file location - self.update_log_file = os.path.expanduser("~/.config/OptimaLab35/update.log") + self.update_log_file = os.path.expanduser("~/.config/OptimaLab35/update_log.json") # Store local versions self.optimalab35_localversion = optimalab35_localversion self.optima35_localversion = optima35_localversion @@ -478,8 +478,10 @@ class UpdaterWindow(QMainWindow, Ui_Updater_Window): # 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.ol35_last_state = self.ppu_ol35.get_last_state() + self.o35_last_state = self.ppu_o35.get_last_state() - self.last_update = self.ppu_o35.last_update_date_string() + #self.last_update = self.ppu_o35.last_update_date_string() # Track which packages need an update self.updates_available = {"OptimaLab35": False, "optima35": False} @@ -493,14 +495,20 @@ class UpdaterWindow(QMainWindow, Ui_Updater_Window): return else: self.ui.label_dev.setVisible(False) + self.ui.label_optimalab35_localversion.setText(self.optimalab35_localversion) self.ui.label_optima35_localversion.setText(self.optima35_localversion) + + self.ui.label_latest_version.setText("Latest version") + self.ui.label_optimalab35_latestversion.setText(self.ol35_last_state[1]) + self.ui.label_optima35_latestversion.setText(self.o35_last_state[1]) + self.ui.update_and_restart_Button.setEnabled(False) # 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_2.setText(self.last_update) + self.ui.label_last_check_2.setText(str(self.ol35_last_state[0])) def dev_mode(self): self.ui.update_and_restart_Button.setEnabled(False) @@ -534,7 +542,10 @@ class UpdaterWindow(QMainWindow, Ui_Updater_Window): self.ui.update_and_restart_Button.setEnabled(True) self.ppu_o35.record_update_check() - self.ui.label_last_check_2.setText(self.ppu_o35.last_update_date_string()) + self.ppu_ol35.record_update_check() + last_date = self.ppu_ol35.get_last_state() + self.ui.label_last_check_2.setText(last_date[0]) + self.ui.label_latest_version.setText("Online version") self.ui.check_for_update_Button.setEnabled(True) def update_and_restart(self): diff --git a/src/OptimaLab35/ui/updater_window.py b/src/OptimaLab35/ui/updater_window.py index 13a2eb4..8ea230e 100644 --- a/src/OptimaLab35/ui/updater_window.py +++ b/src/OptimaLab35/ui/updater_window.py @@ -66,11 +66,11 @@ class Ui_Updater_Window(object): self.gridLayout.addWidget(self.label_optima35_latestversion, 3, 2, 1, 1) - self.label_3 = QLabel(self.widget_2) - self.label_3.setObjectName(u"label_3") - self.label_3.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + self.label_latest_version = QLabel(self.widget_2) + self.label_latest_version.setObjectName(u"label_latest_version") + self.label_latest_version.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) - self.gridLayout.addWidget(self.label_3, 0, 2, 1, 1) + self.gridLayout.addWidget(self.label_latest_version, 0, 2, 1, 1) self.label = QLabel(self.widget_2) self.label.setObjectName(u"label") @@ -135,7 +135,7 @@ class Ui_Updater_Window(object): self.label_optimalab35_latestversion.setText(QCoreApplication.translate("Updater_Window", u"unknown", None)) self.label_2.setText(QCoreApplication.translate("Updater_Window", u"optima35", None)) self.label_optima35_latestversion.setText(QCoreApplication.translate("Updater_Window", u"unknown", None)) - self.label_3.setText(QCoreApplication.translate("Updater_Window", u"Latest version", None)) + self.label_latest_version.setText(QCoreApplication.translate("Updater_Window", u"Latest version", None)) self.label.setText(QCoreApplication.translate("Updater_Window", u"OptimaLab35", None)) self.label_9.setText(QCoreApplication.translate("Updater_Window", u"Package", None)) self.label_optimalab35_localversion.setText(QCoreApplication.translate("Updater_Window", u"0.0.0", None)) diff --git a/src/OptimaLab35/ui/updater_window.ui b/src/OptimaLab35/ui/updater_window.ui index 0e74e74..4d8210d 100644 --- a/src/OptimaLab35/ui/updater_window.ui +++ b/src/OptimaLab35/ui/updater_window.ui @@ -76,7 +76,7 @@ - + Latest version From 0c450328b3d4d710b03ace2b405e8a9d5340956d Mon Sep 17 00:00:00 2001 From: CodeByMrFinchum Date: Fri, 31 Jan 2025 17:42:02 +0100 Subject: [PATCH 02/39] fix: Fixed app not closing after update --- CHANGELOG.md | 3 +++ src/OptimaLab35/gui.py | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a5375a..4505e0d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,9 @@ # Changelog ## 0.8.x +### 0.8.3: Fix – OptimaLab35 Not Closing After Update +- Fixed an issue where **OptimaLab35** would not close properly when updating, resulting in an unresponsive instance and multiple running processes. + ### 0.8.2: Patch for New PyPiUpdater Version - Updated to support **PyPiUpdater 0.4.0**. - Now stores version information locally, preventing an "unknown" state on the first updater launch. diff --git a/src/OptimaLab35/gui.py b/src/OptimaLab35/gui.py index 6fda769..24c2871 100644 --- a/src/OptimaLab35/gui.py +++ b/src/OptimaLab35/gui.py @@ -490,7 +490,7 @@ class UpdaterWindow(QMainWindow, Ui_Updater_Window): def define_gui_interaction(self): """Setup UI interactions.""" - if self.optimalab35_localversion == "0.0.1": + if self.optimalab35_localversion == "0.0.2": self.dev_mode() return else: @@ -583,7 +583,8 @@ class UpdaterWindow(QMainWindow, Ui_Updater_Window): msg.exec() # Restart the application after user clicks "OK" - self.ppu_ol35.restart_program() + #self.ppu_ol35.restart_program() + self.restart_program() def restart_program(self): """Restart the Python program after an update.""" From 1bba7f8bbce3909f5391a15e753aeb1d9a2a0247 Mon Sep 17 00:00:00 2001 From: Mr Finchum Date: Sat, 1 Feb 2025 14:58:32 +0000 Subject: [PATCH 03/39] patch: Minor Enhancements --- CHANGELOG.md | 5 +++++ src/OptimaLab35/gui.py | 23 ++++++++++++++++------- src/OptimaLab35/ui/updater_window.py | 6 +++--- src/OptimaLab35/ui/updater_window.ui | 6 +++--- 4 files changed, 27 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4505e0d..a6b9068 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog ## 0.8.x +### 0.8.4: Minor Enhancements & Cleanup +- Updated window titles. +- Improved error handling for updater: now displays the specific error message instead of just **"error"** when an issue occurs during update checks. +- Ensured all child windows close when the main window is closed. + ### 0.8.3: Fix – OptimaLab35 Not Closing After Update - Fixed an issue where **OptimaLab35** would not close properly when updating, resulting in an unresponsive instance and multiple running processes. diff --git a/src/OptimaLab35/gui.py b/src/OptimaLab35/gui.py index 24c2871..1f8e5ed 100644 --- a/src/OptimaLab35/gui.py +++ b/src/OptimaLab35/gui.py @@ -53,7 +53,7 @@ class OptimaLab35(QMainWindow, Ui_MainWindow): # Change UI elements self.change_statusbar(f"Using {self.o.name} v{self.o.version}", 5000) - self.setWindowTitle(f"{self.name} v{self.version}") + self.set_title() self.default_ui_layout() self.define_gui_interaction() @@ -63,6 +63,13 @@ class OptimaLab35(QMainWindow, Ui_MainWindow): self.ui.png_quality_Slider.setVisible(False) self.ui.quality_label_2.setVisible(False) + def set_title(self): + if self.version == "0.0.1": + title = f"{self.name} DEV MODE" + else: + title = self.name + self.setWindowTitle(title) + def define_gui_interaction(self): self.ui.input_folder_button.clicked.connect(self.browse_input_folder) self.ui.output_folder_button.clicked.connect(self.browse_output_folder) @@ -108,7 +115,7 @@ class OptimaLab35(QMainWindow, Ui_MainWindow): info_text = f"""

{self.name} v{self.version}

(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\nuser-friendly interface for efficient image and metadata management.

+

{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: