diff --git a/src/OptimaLab35/gui.py b/src/OptimaLab35/gui.py
index 51c9fee..22fdafb 100644
--- a/src/OptimaLab35/gui.py
+++ b/src/OptimaLab35/gui.py
@@ -12,7 +12,7 @@ from OptimaLab35.ui.exif_handler_window import ExifEditor
from OptimaLab35.ui.simple_dialog import SimpleDialog # Import the SimpleDialog class
from OptimaLab35 import __version__
-from PySide6.QtCore import QRunnable, QThreadPool, Signal, QObject, QRegularExpression, Qt
+from PySide6.QtCore import QRunnable, QThreadPool, Signal, QObject, QRegularExpression, Qt, QTimer
from PySide6 import QtWidgets
from PySide6.QtWidgets import (
@@ -479,8 +479,8 @@ class UpdaterWindow(QMainWindow, Ui_Updater_Window):
super(UpdaterWindow, self).__init__()
self.ui = Ui_Updater_Window()
self.ui.setupUi(self)
- self.dev_mode = True if optimalab35_localversion == "0.0.1" else False
- self.set_dev_ui()
+ self.dev_mode = True #True if optimalab35_localversion == "0.0.1" else False
+ #self.set_dev_ui()
from PyPiUpdater import PyPiUpdater
# Update log file location
self.update_log_file = os.path.expanduser("~/.config/OptimaLab35/update_log.json")
@@ -499,9 +499,23 @@ class UpdaterWindow(QMainWindow, Ui_Updater_Window):
self.define_gui_interaction()
+ def start_long_press(self):
+ """Start the timer when button is pressed."""
+ self.timer.start(1000) # 1-second long press
+
+ def cancel_long_press(self):
+ """Cancel long press if released early."""
+ self.timer.stop()
+
+ def toggle_dev_ui(self):
+ """Show or hide the hidden UI when long press is detected."""
+ self.ui.dev_widget.setVisible(True)
+
+ self.ui.check_local_Button.clicked.connect(self.local_check_for_updates)
+ self.ui.update_local_Button.clicked.connect(self.local_update)
+
def define_gui_interaction(self):
"""Setup UI interactions."""
-
self.ui.label_optimalab35_localversion.setText(self.optimalab35_localversion)
self.ui.label_optima35_localversion.setText(self.optima35_localversion)
@@ -515,16 +529,16 @@ class UpdaterWindow(QMainWindow, Ui_Updater_Window):
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.time_to_string(self.ol35_last_state[0]))
+ self.ui.dev_widget.setVisible(False)
- def set_dev_ui(self):
- self.ui.check_local_Button.setVisible(self.dev_mode)
- self.ui.update_local_Button.setVisible(self.dev_mode)
- self.ui.check_for_update_Button.setVisible(not self.dev_mode)
- self.ui.update_and_restart_Button.setVisible(not self.dev_mode)
+ # Timer for long press detection
+ self.timer = QTimer()
+ self.timer.setSingleShot(True)
+ self.timer.timeout.connect(self.toggle_dev_ui)
- if self.dev_mode:
- self.ui.check_local_Button.clicked.connect(self.local_check_for_updates)
- self.ui.update_local_Button.clicked.connect(self.local_update)
+ # 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)
def local_check_for_updates(self):
dist_folder = os.path.expanduser("~/git/gitlab_public/OptimaLab35/dist/")
@@ -560,7 +574,14 @@ class UpdaterWindow(QMainWindow, Ui_Updater_Window):
# Confirm update
msg = QMessageBox()
msg.setWindowTitle("Update Available")
- msg.setText(f"Updating: {', '.join(packages_to_update)}\nUpdate and restart app?")
+ message = f"Updating: {', '.join(packages_to_update)}\nUpdate "
+
+ if self.ui.restart_checkBox.isChecked():
+ message = message + "and restart app?"
+ else:
+ message = message + "app?"
+
+ msg.setText(message)
msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
result = msg.exec()
@@ -584,8 +605,8 @@ class UpdaterWindow(QMainWindow, Ui_Updater_Window):
msg.exec()
# Restart the application after user clicks "OK"
- #self.ppu_ol35.restart_program()
- self.restart_program()
+ if self.ui.restart_checkBox.isChecked():
+ self.restart_program()
def time_to_string(self, time_time):
dt_obj = datetime.fromtimestamp(time_time)
@@ -638,7 +659,14 @@ class UpdaterWindow(QMainWindow, Ui_Updater_Window):
# Confirm update
msg = QMessageBox()
msg.setWindowTitle("Update Available")
- msg.setText(f"Updating: {', '.join(packages_to_update)}\nUpdate and restart app?")
+ message = f"Updating: {', '.join(packages_to_update)}\nUpdate "
+
+ if self.ui.restart_checkBox.isChecked():
+ message = message + "and restart app?"
+ else:
+ message = message + "app?"
+
+ msg.setText(message)
msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
result = msg.exec()
@@ -662,8 +690,8 @@ class UpdaterWindow(QMainWindow, Ui_Updater_Window):
msg.exec()
# Restart the application after user clicks "OK"
- #self.ppu_ol35.restart_program()
- self.restart_program()
+ if self.ui.restart_checkBox.isChecked():
+ self.restart_program()
def restart_program(self):
"""Restart the Python program after an update."""
diff --git a/src/OptimaLab35/ui/updater_window.py b/src/OptimaLab35/ui/updater_window.py
index 205fc62..1c2e67f 100644
--- a/src/OptimaLab35/ui/updater_window.py
+++ b/src/OptimaLab35/ui/updater_window.py
@@ -15,15 +15,16 @@ from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
QFont, QFontDatabase, QGradient, QIcon,
QImage, QKeySequence, QLinearGradient, QPainter,
QPalette, QPixmap, QRadialGradient, QTransform)
-from PySide6.QtWidgets import (QApplication, QGridLayout, QHBoxLayout, QLabel,
- QMainWindow, QPushButton, QSizePolicy, QWidget)
+from PySide6.QtWidgets import (QApplication, QCheckBox, QGridLayout, QHBoxLayout,
+ QLabel, QMainWindow, QPushButton, QSizePolicy,
+ QWidget)
class Ui_Updater_Window(object):
def setupUi(self, Updater_Window):
if not Updater_Window.objectName():
Updater_Window.setObjectName(u"Updater_Window")
Updater_Window.setEnabled(True)
- Updater_Window.resize(336, 200)
+ Updater_Window.resize(340, 200)
Updater_Window.setMinimumSize(QSize(336, 200))
Updater_Window.setMaximumSize(QSize(340, 300))
self.centralwidget = QWidget(Updater_Window)
@@ -102,15 +103,11 @@ class Ui_Updater_Window(object):
self.horizontalLayout.addWidget(self.update_and_restart_Button)
- self.check_local_Button = QPushButton(self.widget)
- self.check_local_Button.setObjectName(u"check_local_Button")
+ self.restart_checkBox = QCheckBox(self.widget)
+ self.restart_checkBox.setObjectName(u"restart_checkBox")
+ self.restart_checkBox.setChecked(True)
- self.horizontalLayout.addWidget(self.check_local_Button)
-
- self.update_local_Button = QPushButton(self.widget)
- self.update_local_Button.setObjectName(u"update_local_Button")
-
- self.horizontalLayout.addWidget(self.update_local_Button)
+ self.horizontalLayout.addWidget(self.restart_checkBox)
self.gridLayout_2.addWidget(self.widget, 2, 0, 1, 2)
@@ -127,6 +124,23 @@ class Ui_Updater_Window(object):
self.gridLayout_2.addWidget(self.label_last_check_2, 0, 1, 1, 1)
+ self.dev_widget = QWidget(self.centralwidget)
+ self.dev_widget.setObjectName(u"dev_widget")
+ self.horizontalLayout_2 = QHBoxLayout(self.dev_widget)
+ self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
+ self.check_local_Button = QPushButton(self.dev_widget)
+ self.check_local_Button.setObjectName(u"check_local_Button")
+
+ self.horizontalLayout_2.addWidget(self.check_local_Button)
+
+ self.update_local_Button = QPushButton(self.dev_widget)
+ self.update_local_Button.setObjectName(u"update_local_Button")
+
+ self.horizontalLayout_2.addWidget(self.update_local_Button)
+
+
+ self.gridLayout_2.addWidget(self.dev_widget, 3, 0, 1, 2)
+
Updater_Window.setCentralWidget(self.centralwidget)
self.retranslateUi(Updater_Window)
@@ -146,10 +160,14 @@ class Ui_Updater_Window(object):
self.label_latest_version.setText(QCoreApplication.translate("Updater_Window", u"Latest version", None))
self.label_2.setText(QCoreApplication.translate("Updater_Window", u"optima35", None))
self.check_for_update_Button.setText(QCoreApplication.translate("Updater_Window", u"Check for update", None))
- self.update_and_restart_Button.setText(QCoreApplication.translate("Updater_Window", u"Update and restart", None))
- self.check_local_Button.setText(QCoreApplication.translate("Updater_Window", u"Check local", None))
- self.update_local_Button.setText(QCoreApplication.translate("Updater_Window", u"Update local", None))
+ self.update_and_restart_Button.setText(QCoreApplication.translate("Updater_Window", u"Update", None))
+#if QT_CONFIG(tooltip)
+ self.restart_checkBox.setToolTip(QCoreApplication.translate("Updater_Window", u"Restarts the app after update.", None))
+#endif // QT_CONFIG(tooltip)
+ self.restart_checkBox.setText(QCoreApplication.translate("Updater_Window", u"Restart", None))
self.label_last_check.setText(QCoreApplication.translate("Updater_Window", u"Last update check:", None))
self.label_last_check_2.setText(QCoreApplication.translate("Updater_Window", u"TextLabel", None))
+ self.check_local_Button.setText(QCoreApplication.translate("Updater_Window", u"Check local", None))
+ self.update_local_Button.setText(QCoreApplication.translate("Updater_Window", u"Update local", None))
# retranslateUi
diff --git a/src/OptimaLab35/ui/updater_window.ui b/src/OptimaLab35/ui/updater_window.ui
index 803d2f8..581aa3d 100644
--- a/src/OptimaLab35/ui/updater_window.ui
+++ b/src/OptimaLab35/ui/updater_window.ui
@@ -9,7 +9,7 @@
0
0
- 336
+ 340
200
@@ -130,21 +130,20 @@
-
- Update and restart
+ Update
-
-
-
- Check local
+
+
+ Restarts the app after update.
-
-
- -
-
- Update local
+ Restart
+
+
+ true
@@ -171,6 +170,26 @@
+ -
+
+
+
-
+
+
+ Check local
+
+
+
+ -
+
+
+ Update local
+
+
+
+
+
+
diff --git a/src/OptimaLab35/utils/utility.py b/src/OptimaLab35/utils/utility.py
index 25990c5..d7673f5 100644
--- a/src/OptimaLab35/utils/utility.py
+++ b/src/OptimaLab35/utils/utility.py
@@ -29,7 +29,6 @@ class Utilities:
def _ensure_program_folder_exists(self):
program_folder = os.path.expanduser("~/.config/OptimaLab35")
- print(program_folder)
if not os.path.exists(program_folder):
print("in not, make folder")
os.makedirs(program_folder)