From e3d90a7e26f84269788cbad87af5556beeee0ad7 Mon Sep 17 00:00:00 2001 From: python357-1 Date: Tue, 31 Dec 2024 18:46:51 -0600 Subject: [PATCH] fix: many minor fixes --- tagstudio/src/core/driver.py | 2 +- tagstudio/src/core/settings/tssettings.py | 10 ++++++---- tagstudio/src/core/tscacheddata.py | 9 ++++++--- tagstudio/src/qt/modals/settings_modal.py | 11 ++++++----- tagstudio/src/qt/ts_qt.py | 8 ++++---- tagstudio/src/qt/widgets/preview_panel.py | 2 -- 6 files changed, 23 insertions(+), 19 deletions(-) diff --git a/tagstudio/src/core/driver.py b/tagstudio/src/core/driver.py index c01188eb7..07b39f598 100644 --- a/tagstudio/src/core/driver.py +++ b/tagstudio/src/core/driver.py @@ -21,7 +21,7 @@ def evaluate_path(self, open_path: str | None) -> LibraryStatus: if not library_path.exists(): logger.error("Path does not exist.", open_path=open_path) return LibraryStatus(success=False, message="Path does not exist.") - elif self.settings.open_last_loaded_on_startup and self.cache.last_lib: + elif self.settings.open_last_loaded_on_startup and self.cache.last_library: library_path = Path(str(self.cache.last_library)) if not (library_path / TS_FOLDER_NAME).exists(): logger.error( diff --git a/tagstudio/src/core/settings/tssettings.py b/tagstudio/src/core/settings/tssettings.py index 1ef72f0ee..391e1381b 100644 --- a/tagstudio/src/core/settings/tssettings.py +++ b/tagstudio/src/core/settings/tssettings.py @@ -2,6 +2,7 @@ import toml from pydantic import BaseModel, Field +from typing import Any # NOTE: pydantic also has a BaseSettings class (from pydantic-settings) that allows any settings @@ -21,8 +22,9 @@ class TSSettings(BaseModel): @staticmethod def read_settings(path: Path | str, **kwargs) -> "TSSettings": - settings_data: dict[str, any] = dict() - if path.exists(): + path_value = Path(path) + settings_data: dict[str, Any] = dict() + if path_value.exists(): with open(path, "rb") as file: filecontents = file.read() if len(filecontents.strip()) != 0: @@ -32,8 +34,8 @@ def read_settings(path: Path | str, **kwargs) -> "TSSettings": settings = TSSettings(**settings_data) return settings - def to_dict(self) -> dict[str, any]: - d = dict[str, any]() + def to_dict(self) -> dict[str, Any]: + d = dict[str, Any]() for prop_name, prop_value in self: d[prop_name] = prop_value diff --git a/tagstudio/src/core/tscacheddata.py b/tagstudio/src/core/tscacheddata.py index 9f13bef14..83182dff5 100644 --- a/tagstudio/src/core/tscacheddata.py +++ b/tagstudio/src/core/tscacheddata.py @@ -8,14 +8,15 @@ logger = structlog.get_logger(__name__) -cache_dir = Path(user_cache_dir()) / ".TagStudio" +cache_dir = Path(user_cache_dir()) / "TagStudio" cache_location = cache_dir / "cache.toml" class TSCachedData(BaseModel): model_config = ConfigDict(arbitrary_types_allowed=True) last_library: str | None = Field(default=None) - library_history: dict[datetime, str] = Field(default_factory=dict[datetime, str]) + # a dict of ISO formatted date strings -> paths + library_history: dict[str, str] = Field(default_factory=dict[datetime, str]) path: str = Field() @@ -41,4 +42,6 @@ def open(path: str | None = None) -> "TSCachedData": def save(self): with open(self.path, "w") as f: - toml.dump(dict(self), f) + file_data = dict(self) + file_data.pop("path") + toml.dump(file_data, f) diff --git a/tagstudio/src/qt/modals/settings_modal.py b/tagstudio/src/qt/modals/settings_modal.py index 48ba8347c..0459b9777 100644 --- a/tagstudio/src/qt/modals/settings_modal.py +++ b/tagstudio/src/qt/modals/settings_modal.py @@ -7,14 +7,15 @@ QLabel, QVBoxLayout, ) -from src.core.settings import tssettings +from src.core.settings import TSSettings from src.qt.widgets.panel import PanelWidget +from typing import Any class SettingsModal(PanelWidget): - def __init__(self, settings: tssettings): + def __init__(self, settings: TSSettings): super().__init__() - self.tempSettings = copy.deepcopy(settings) + self.tempSettings: TSSettings = copy.deepcopy(settings) self.main = QVBoxLayout(self) @@ -84,8 +85,8 @@ def __init__(self, settings: tssettings): self.main.addLayout(self.show_library_list_Row) self.main.addLayout(self.show_filenames_Row) - def set_property(self, prop_name: str, value: any) -> None: + def set_property(self, prop_name: str, value: Any) -> None: setattr(self.tempSettings, prop_name, value) - def get_content(self) -> tssettings: + def get_content(self): return self.tempSettings diff --git a/tagstudio/src/qt/ts_qt.py b/tagstudio/src/qt/ts_qt.py index 4c93e8cef..22d187c12 100644 --- a/tagstudio/src/qt/ts_qt.py +++ b/tagstudio/src/qt/ts_qt.py @@ -175,7 +175,7 @@ def __init__(self, backend, args): logger.info("Using Config File", path=path) self.settings = TSSettings.read_settings(path) else: - path = "" + path = Path() if sys.platform == "win32": path = Path.home() / "AppData" / "Roaming" / "TagStudio" / "config.toml" else: # "linux" and "darwin" should use the same config directory @@ -628,7 +628,7 @@ def close_library(self, is_shutdown: bool = False): self.main_window.statusbar.showMessage(Translations["status.library_closing"]) start_time = time.time() - self.cache.last_library = self.lib.library_dir + self.cache.last_library = str(self.lib.library_dir) self.settings.save() self.lib.close() @@ -1238,13 +1238,13 @@ def filter_items(self, filter: FilterState | None = None) -> None: ) def remove_recent_library(self, item_key: str) -> None: - self.cache.library_history.pop(datetime.datetime.strptime(item_key)) + self.cache.library_history.pop(item_key) def update_libs_list(self, path: Path | str): item_limit: int = 5 path = Path(path) - all_libs = {str(time.time()): str(path)} + all_libs = {datetime.datetime.fromtimestamp(time.time()).isoformat(): str(path)} for access_time in self.cache.library_history: lib = self.cache.library_history[access_time] diff --git a/tagstudio/src/qt/widgets/preview_panel.py b/tagstudio/src/qt/widgets/preview_panel.py index cfad93b37..b662fbd57 100644 --- a/tagstudio/src/qt/widgets/preview_panel.py +++ b/tagstudio/src/qt/widgets/preview_panel.py @@ -252,8 +252,6 @@ def __init__(self, library: Library, driver: "QtDriver"): # set initial visibility based on settings if not self.driver.settings.show_library_list: self.libs_flow_container.hide() - else: - self.libs_flow_container.show() splitter = QSplitter() splitter.setOrientation(Qt.Orientation.Vertical)