From eede5b3600da9fcceb333a86d04246d88de3a9f0 Mon Sep 17 00:00:00 2001 From: Andrew Arneson Date: Fri, 10 May 2024 17:52:38 -0600 Subject: [PATCH 1/4] Move the tagstudio.ini file to alongside the executable --- tagstudio/src/qt/ts_qt.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tagstudio/src/qt/ts_qt.py b/tagstudio/src/qt/ts_qt.py index 8b286859..e03b93ee 100644 --- a/tagstudio/src/qt/ts_qt.py +++ b/tagstudio/src/qt/ts_qt.py @@ -188,9 +188,7 @@ class QtDriver(QObject): self.SIGTERM.connect(self.handleSIGTERM) - self.settings = QSettings( - QSettings.IniFormat, QSettings.UserScope, "tagstudio", "TagStudio" - ) + self.settings = QSettings(QSettings.IniFormat, QSettings.UserScope, "TagStudio") max_threads = os.cpu_count() for i in range(max_threads): From 74e90df6804c3dc495e637fabdeb34fca5590482 Mon Sep 17 00:00:00 2001 From: Andrew Arneson Date: Sun, 12 May 2024 23:07:01 -0600 Subject: [PATCH 2/4] Revert QSettings location to `IniFormat` `UserScope` defaults Adds `-c/--config-file ` argument to tag_studio.py --- tagstudio/src/qt/ts_qt.py | 40 +++++++++++++++++++++++++++++++++++---- tagstudio/tag_studio.py | 7 +++++++ 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/tagstudio/src/qt/ts_qt.py b/tagstudio/src/qt/ts_qt.py index b3e11d45..6a18fb52 100644 --- a/tagstudio/src/qt/ts_qt.py +++ b/tagstudio/src/qt/ts_qt.py @@ -107,9 +107,6 @@ 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()) - class NavigationState: """Represents a state of the Library grid view.""" @@ -189,7 +186,42 @@ class QtDriver(QObject): self.SIGTERM.connect(self.handleSIGTERM) - self.settings = QSettings(QSettings.IniFormat, QSettings.UserScope, "TagStudio") + if self.args.config_file: + path = Path(self.args.config_file) + if path.is_dir(): + path = path / "TagStudio.ini" + self.settings = QSettings(str(path), QSettings.IniFormat) + logging.info( + f"[QT DRIVER] Directory provided defaulting to TagStudio.ini in directory, using {self.settings.fileName()}" + ) + elif path.is_file(): + self.settings = QSettings(str(path), QSettings.IniFormat) + logging.info( + f"[QT DRIVER] Config File exists, using {self.settings.fileName()}" + ) + else: + if path.suffix == ".ini" and path.parent.is_dir(): + self.settings = QSettings(str(path), QSettings.IniFormat) + logging.info( + f"[QT DRIVER] Config File does not exist, valid path specified using {self.settings.fileName()}" + ) + else: + self.settings = QSettings( + QSettings.IniFormat, + QSettings.UserScope, + "TagStudio", + "TagStudio", + ) + logging.warning( + f"[QT DRIVER] Config File does not exist, defaulting to {self.settings.fileName()}" + ) + else: + self.settings = QSettings( + QSettings.IniFormat, QSettings.UserScope, "TagStudio", "TagStudio" + ) + logging.info( + f"[QT DRIVER] Config File not specified, defaulting to {self.settings.fileName()}" + ) max_threads = os.cpu_count() for i in range(max_threads): diff --git a/tagstudio/tag_studio.py b/tagstudio/tag_studio.py index e98cf8c9..52a9a4b9 100644 --- a/tagstudio/tag_studio.py +++ b/tagstudio/tag_studio.py @@ -29,6 +29,13 @@ def main(): type=str, help="Path to a TagStudio Library folder to open on start.", ) + parser.add_argument( + "-c", "--config-file", + dest="config_file", + type=str, + help="Path to a TagStudio.ini config file to use" + ) + # parser.add_argument('--browse', dest='browse', action='store_true', # help='Jumps to entry browsing on startup.') # parser.add_argument('--external_preview', dest='external_preview', action='store_true', From e7318c747308ffe6f9030c58943fe2d6f4dbc4e6 Mon Sep 17 00:00:00 2001 From: Andrew Arneson Date: Sun, 12 May 2024 23:09:28 -0600 Subject: [PATCH 3/4] Ruff Formatting --- tagstudio/tag_studio.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tagstudio/tag_studio.py b/tagstudio/tag_studio.py index 52a9a4b9..97688343 100644 --- a/tagstudio/tag_studio.py +++ b/tagstudio/tag_studio.py @@ -30,10 +30,11 @@ def main(): help="Path to a TagStudio Library folder to open on start.", ) parser.add_argument( - "-c", "--config-file", + "-c", + "--config-file", dest="config_file", type=str, - help="Path to a TagStudio.ini config file to use" + help="Path to a TagStudio.ini config file to use", ) # parser.add_argument('--browse', dest='browse', action='store_true', From 89b1921e56e739e519ded5ae183c0841f36861da Mon Sep 17 00:00:00 2001 From: Andrew Arneson Date: Mon, 13 May 2024 20:45:37 -0600 Subject: [PATCH 4/4] Eliminate guess work on config file Removes support for directory as a `--config-file` argument --- tagstudio/src/qt/ts_qt.py | 31 +++++-------------------------- 1 file changed, 5 insertions(+), 26 deletions(-) diff --git a/tagstudio/src/qt/ts_qt.py b/tagstudio/src/qt/ts_qt.py index 6a18fb52..93020fc6 100644 --- a/tagstudio/src/qt/ts_qt.py +++ b/tagstudio/src/qt/ts_qt.py @@ -188,33 +188,12 @@ class QtDriver(QObject): if self.args.config_file: path = Path(self.args.config_file) - if path.is_dir(): - path = path / "TagStudio.ini" - self.settings = QSettings(str(path), QSettings.IniFormat) - logging.info( - f"[QT DRIVER] Directory provided defaulting to TagStudio.ini in directory, using {self.settings.fileName()}" + if not path.exists(): + logging.warning( + f"[QT DRIVER] Config File does not exist creating {str(path)}" ) - elif path.is_file(): - self.settings = QSettings(str(path), QSettings.IniFormat) - logging.info( - f"[QT DRIVER] Config File exists, using {self.settings.fileName()}" - ) - else: - if path.suffix == ".ini" and path.parent.is_dir(): - self.settings = QSettings(str(path), QSettings.IniFormat) - logging.info( - f"[QT DRIVER] Config File does not exist, valid path specified using {self.settings.fileName()}" - ) - else: - self.settings = QSettings( - QSettings.IniFormat, - QSettings.UserScope, - "TagStudio", - "TagStudio", - ) - logging.warning( - f"[QT DRIVER] Config File does not exist, defaulting to {self.settings.fileName()}" - ) + logging.info(f"[QT DRIVER] Using Config File {str(path)}") + self.settings = QSettings(str(path), QSettings.IniFormat) else: self.settings = QSettings( QSettings.IniFormat, QSettings.UserScope, "TagStudio", "TagStudio"