From cb70df3f04bc568639e725539bdf7fda6baa1738 Mon Sep 17 00:00:00 2001 From: rsazra Date: Sat, 12 Jul 2025 16:36:30 -0400 Subject: [PATCH 1/5] feat: click tags in library to edit --- src/tagstudio/qt/modals/tag_search.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/tagstudio/qt/modals/tag_search.py b/src/tagstudio/qt/modals/tag_search.py index ca980a682..2bd5b38f8 100644 --- a/src/tagstudio/qt/modals/tag_search.py +++ b/src/tagstudio/qt/modals/tag_search.py @@ -279,14 +279,13 @@ def set_tag_widget(self, tag: Tag | None, index: int): tag_widget.has_remove = has_remove_button with catch_warnings(record=True): + tag_widget.on_click.disconnect() tag_widget.on_edit.disconnect() tag_widget.on_remove.disconnect() - tag_widget.bg_button.clicked.disconnect() - tag_id = tag.id + tag_widget.on_click.connect(lambda t=tag: self.edit_tag(t)) tag_widget.on_edit.connect(lambda t=tag: self.edit_tag(t)) tag_widget.on_remove.connect(lambda t=tag: self.delete_tag(t)) - tag_widget.bg_button.clicked.connect(lambda: self.tag_chosen.emit(tag_id)) if self.driver: tag_widget.search_for_tag_action.triggered.connect( From 2ab8ce143f0cfe72bb9099eaa7a37457b7d4199a Mon Sep 17 00:00:00 2001 From: rsazra Date: Sat, 12 Jul 2025 16:36:53 -0400 Subject: [PATCH 2/5] type fixes in file --- src/tagstudio/qt/modals/tag_search.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/tagstudio/qt/modals/tag_search.py b/src/tagstudio/qt/modals/tag_search.py index 2bd5b38f8..c02282fe7 100644 --- a/src/tagstudio/qt/modals/tag_search.py +++ b/src/tagstudio/qt/modals/tag_search.py @@ -42,7 +42,7 @@ class TagSearchPanel(PanelWidget): tag_chosen = Signal(int) lib: Library - driver: "QtDriver" + driver: QtDriver | None = None is_initialized: bool = False first_tag_id: int | None = None is_tag_chooser: bool @@ -56,13 +56,12 @@ class TagSearchPanel(PanelWidget): def __init__( self, library: Library, - exclude: list[int] = None, + exclude: list[int] = [], is_tag_chooser: bool = True, ): super().__init__() self.lib = library - self.driver = None - self.exclude = exclude or [] + self.exclude = exclude self.is_tag_chooser = is_tag_chooser self.create_button_in_layout: bool = False @@ -194,7 +193,7 @@ def update_tags(self, query: str | None = None): create_button: QPushButton | None = None if self.create_button_in_layout and self.scroll_layout.count(): create_button = self.scroll_layout.takeAt(self.scroll_layout.count() - 1).widget() # type: ignore - create_button.deleteLater() + if create_button: create_button.deleteLater() self.create_button_in_layout = False # Get results for the search query @@ -264,7 +263,8 @@ def set_tag_widget(self, tag: Tag | None, index: int): self.scroll_layout.addWidget(new_tw) # Assign the tag to the widget at the given index. - tag_widget: TagWidget = self.scroll_layout.itemAt(index).widget() + tag_widget = self.scroll_layout.itemAt(index).widget() + assert isinstance(tag_widget, TagWidget) tag_widget.set_tag(tag) # Set tag widget viability and potentially return early @@ -292,7 +292,7 @@ def set_tag_widget(self, tag: Tag | None, index: int): lambda checked=False, tag_id=tag.id: ( self.driver.main_window.search_field.setText(f"tag_id:{tag_id}"), self.driver.update_browsing_state(BrowsingState.from_tag_id(tag_id)), - ) + ) if self.driver else None ) tag_widget.search_for_tag_action.setEnabled(True) else: From efdabdc24f9cacbdc047d5d5cd545c9178f2c220 Mon Sep 17 00:00:00 2001 From: rsazra Date: Sat, 12 Jul 2025 16:56:00 -0400 Subject: [PATCH 3/5] CI fixes --- src/tagstudio/qt/modals/tag_search.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/tagstudio/qt/modals/tag_search.py b/src/tagstudio/qt/modals/tag_search.py index c02282fe7..68ed00be7 100644 --- a/src/tagstudio/qt/modals/tag_search.py +++ b/src/tagstudio/qt/modals/tag_search.py @@ -42,7 +42,7 @@ class TagSearchPanel(PanelWidget): tag_chosen = Signal(int) lib: Library - driver: QtDriver | None = None + driver: "QtDriver | None" = None is_initialized: bool = False first_tag_id: int | None = None is_tag_chooser: bool @@ -56,12 +56,12 @@ class TagSearchPanel(PanelWidget): def __init__( self, library: Library, - exclude: list[int] = [], + exclude: list[int], is_tag_chooser: bool = True, ): super().__init__() self.lib = library - self.exclude = exclude + self.exclude = exclude or [] self.is_tag_chooser = is_tag_chooser self.create_button_in_layout: bool = False @@ -193,7 +193,8 @@ def update_tags(self, query: str | None = None): create_button: QPushButton | None = None if self.create_button_in_layout and self.scroll_layout.count(): create_button = self.scroll_layout.takeAt(self.scroll_layout.count() - 1).widget() # type: ignore - if create_button: create_button.deleteLater() + if create_button: + create_button.deleteLater() self.create_button_in_layout = False # Get results for the search query @@ -292,7 +293,9 @@ def set_tag_widget(self, tag: Tag | None, index: int): lambda checked=False, tag_id=tag.id: ( self.driver.main_window.search_field.setText(f"tag_id:{tag_id}"), self.driver.update_browsing_state(BrowsingState.from_tag_id(tag_id)), - ) if self.driver else None + ) + if self.driver + else None ) tag_widget.search_for_tag_action.setEnabled(True) else: From 87a435f0eb316bdf861f7fd0414d4feec8fdc976 Mon Sep 17 00:00:00 2001 From: rsazra Date: Sat, 12 Jul 2025 17:07:26 -0400 Subject: [PATCH 4/5] fix pytest errors --- src/tagstudio/qt/modals/tag_search.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tagstudio/qt/modals/tag_search.py b/src/tagstudio/qt/modals/tag_search.py index 68ed00be7..926c1bfe5 100644 --- a/src/tagstudio/qt/modals/tag_search.py +++ b/src/tagstudio/qt/modals/tag_search.py @@ -56,7 +56,7 @@ class TagSearchPanel(PanelWidget): def __init__( self, library: Library, - exclude: list[int], + exclude: list[int] | None = None, is_tag_chooser: bool = True, ): super().__init__() From f5434bd6be9c5f245276aeeb55bc2acf31a17a33 Mon Sep 17 00:00:00 2001 From: rsazra Date: Sat, 12 Jul 2025 17:18:44 -0400 Subject: [PATCH 5/5] use walrus operator lol --- src/tagstudio/qt/modals/tag_search.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/tagstudio/qt/modals/tag_search.py b/src/tagstudio/qt/modals/tag_search.py index 926c1bfe5..8f8c89a90 100644 --- a/src/tagstudio/qt/modals/tag_search.py +++ b/src/tagstudio/qt/modals/tag_search.py @@ -264,8 +264,7 @@ def set_tag_widget(self, tag: Tag | None, index: int): self.scroll_layout.addWidget(new_tw) # Assign the tag to the widget at the given index. - tag_widget = self.scroll_layout.itemAt(index).widget() - assert isinstance(tag_widget, TagWidget) + assert isinstance(tag_widget := self.scroll_layout.itemAt(index).widget(), TagWidget) tag_widget.set_tag(tag) # Set tag widget viability and potentially return early