From 5c746a9950e2c65f107359ff9eb9316a08fd0f3a Mon Sep 17 00:00:00 2001 From: Andrew Arneson Date: Thu, 25 Apr 2024 12:23:13 -0600 Subject: [PATCH 1/3] add Qsettings and restore last library on open Settings are currently stored as an INI file within the project directory rather than messing with registry or system configurations. --- tagstudio/src/qt/ts_qt.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/tagstudio/src/qt/ts_qt.py b/tagstudio/src/qt/ts_qt.py index d9bbccc1..384cb5eb 100644 --- a/tagstudio/src/qt/ts_qt.py +++ b/tagstudio/src/qt/ts_qt.py @@ -26,7 +26,7 @@ from typing import Optional import cv2 from PIL import Image, ImageChops, UnidentifiedImageError, ImageQt, ImageDraw, ImageFont, ImageEnhance from PySide6 import QtCore -from PySide6.QtCore import QObject, QThread, Signal, QRunnable, Qt, QThreadPool, QSize, QEvent, QTimer +from PySide6.QtCore import QObject, QThread, Signal, QRunnable, Qt, QThreadPool, QSize, QEvent, QTimer, QSettings from PySide6.QtGui import (QGuiApplication, QPixmap, QEnterEvent, QMouseEvent, QResizeEvent, QPainter, QColor, QPen, QAction, QStandardItemModel, QStandardItem, QPainterPath, QFontDatabase, QIcon) from PySide6.QtUiTools import QUiLoader @@ -61,6 +61,9 @@ INFO = f'[INFO]' logging.basicConfig(format="%(message)s", level=logging.INFO) +# Keep settings in ini format in the current working directory. +QSettings.setPath(QSettings.IniFormat, QSettings.UserScope, os.getcwd()) + def open_file(path: str): try: @@ -3573,6 +3576,8 @@ class QtDriver(QObject): self.SIGTERM.connect(self.handleSIGTERM) + self.settings = QSettings(QSettings.IniFormat, QSettings.UserScope, 'TagStudio') + max_threads = os.cpu_count() for i in range(max_threads): @@ -3796,10 +3801,15 @@ class QtDriver(QObject): self.splash.finish(self.main_window) self.preview_panel.update_widgets() - - if self.args.open: - self.splash.showMessage(f'Opening Library "{self.args.open}"...', int(Qt.AlignmentFlag.AlignBottom|Qt.AlignmentFlag.AlignHCenter), QColor('#9782ff')) - self.open_library(self.args.open) + # Check if a library should be opened on startup, args should override last_library + # TODO: check for behavior (open last, open default, start empty) + if self.args.open or self.settings.contains("last_library"): + if self.args.open: + lib = self.args.open + elif self.settings.value("last_library"): + lib = self.settings.value("last_library") + self.splash.showMessage(f'Opening Library "{lib}"...', int(Qt.AlignmentFlag.AlignBottom|Qt.AlignmentFlag.AlignHCenter), QColor('#9782ff')) + self.open_library(lib) app.exec_() @@ -3819,6 +3829,7 @@ class QtDriver(QObject): # Save Library on Application Exit if self.lib.library_dir: self.save_library() + self.settings.setValue("last_library", self.lib.library_dir) QApplication.quit() From 82bb63191a6033b6e4f855b68fce465659a8a3e8 Mon Sep 17 00:00:00 2001 From: Andrew Arneson Date: Thu, 25 Apr 2024 14:12:40 -0600 Subject: [PATCH 2/3] Tweak setting location to ensure compatibility between IDEs Explicitly call sync to save `.ini` file --- tagstudio/src/qt/ts_qt.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tagstudio/src/qt/ts_qt.py b/tagstudio/src/qt/ts_qt.py index 384cb5eb..eaad3bcb 100644 --- a/tagstudio/src/qt/ts_qt.py +++ b/tagstudio/src/qt/ts_qt.py @@ -3577,6 +3577,7 @@ class QtDriver(QObject): self.SIGTERM.connect(self.handleSIGTERM) self.settings = QSettings(QSettings.IniFormat, QSettings.UserScope, 'TagStudio') + self.settings = QSettings(QSettings.IniFormat, QSettings.UserScope, 'tagstudio', 'TagStudio') max_threads = os.cpu_count() @@ -3830,6 +3831,7 @@ class QtDriver(QObject): if self.lib.library_dir: self.save_library() self.settings.setValue("last_library", self.lib.library_dir) + self.settings.sync() QApplication.quit() From 2514809e173087bb169eaecf87323b4b17fb879c Mon Sep 17 00:00:00 2001 From: Andrew Arneson Date: Thu, 25 Apr 2024 14:20:46 -0600 Subject: [PATCH 3/3] remove doubled up line --- tagstudio/src/qt/ts_qt.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tagstudio/src/qt/ts_qt.py b/tagstudio/src/qt/ts_qt.py index eaad3bcb..287ef0c3 100644 --- a/tagstudio/src/qt/ts_qt.py +++ b/tagstudio/src/qt/ts_qt.py @@ -3576,7 +3576,6 @@ class QtDriver(QObject): self.SIGTERM.connect(self.handleSIGTERM) - self.settings = QSettings(QSettings.IniFormat, QSettings.UserScope, 'TagStudio') self.settings = QSettings(QSettings.IniFormat, QSettings.UserScope, 'tagstudio', 'TagStudio')