refactor: rename select_item() to toggle_item_selection()

This commit is contained in:
Travis Abendshien
2025-01-11 04:38:39 -08:00
parent 114bc0437e
commit 3049afa43c
4 changed files with 37 additions and 24 deletions

View File

@@ -974,8 +974,21 @@ class QtDriver(DriverMixin, QObject):
sa.setWidgetResizable(True)
sa.setWidget(self.flow_container)
def select_item(self, item_id: int, append: bool, bridge: bool):
"""Select one or more items in the Thumbnail Grid."""
def toggle_item_selection(self, item_id: int, append: bool, bridge: bool):
"""Toggle the selection of an item in the Thumbnail Grid.
If an item is not selected, this selects it. If an item is already selected, this will
deselect it as long as append and bridge are False.
Args:
item_id(int): The ID of the item/entry to select.
append(bool): Whether or not to add this item to the previous selection
or to restart the selection with this item.
Setting to True acts like "Ctrl + Click" selecting.
bridge(bool): Whether or not to select items in the visual range of the last item
selected and this current item.
Setting to True acts like "Shift + Click" selecting.
"""
logger.info("[QtDriver] Selecting Items:", item_id=item_id, append=append, bridge=bridge)
if append:
@@ -1175,7 +1188,7 @@ class QtDriver(DriverMixin, QObject):
item_thumb.assign_badge(BadgeType.FAVORITE, entry.is_favorite)
item_thumb.update_clickable(
clickable=(
lambda checked=False, item_id=entry.id: self.select_item(
lambda checked=False, item_id=entry.id: self.toggle_item_selection(
item_id,
append=(
QGuiApplication.keyboardModifiers()

View File

@@ -5,8 +5,8 @@ def test_update_selection_empty(qt_driver, library):
panel = PreviewPanel(library, qt_driver)
# Clear the library selection (selecting 1 then unselecting 1)
qt_driver.select_item(1, append=False, bridge=False)
qt_driver.select_item(1, append=True, bridge=False)
qt_driver.toggle_item_selection(1, append=False, bridge=False)
qt_driver.toggle_item_selection(1, append=True, bridge=False)
panel.update_widgets()
# FieldContainer should hide all containers
@@ -18,7 +18,7 @@ def test_update_selection_single(qt_driver, library, entry_full):
panel = PreviewPanel(library, qt_driver)
# Select the single entry
qt_driver.select_item(entry_full.id, append=False, bridge=False)
qt_driver.toggle_item_selection(entry_full.id, append=False, bridge=False)
panel.update_widgets()
# FieldContainer should show all applicable tags and field containers
@@ -32,8 +32,8 @@ def test_update_selection_multiple(qt_driver, library):
panel = PreviewPanel(library, qt_driver)
# Select the multiple entries
qt_driver.select_item(1, append=False, bridge=False)
qt_driver.select_item(2, append=True, bridge=False)
qt_driver.toggle_item_selection(1, append=False, bridge=False)
qt_driver.toggle_item_selection(2, append=True, bridge=False)
panel.update_widgets()
# FieldContainer should show mixed field editing
@@ -47,7 +47,7 @@ def test_add_tag_to_selection_single(qt_driver, library, entry_full):
assert {t.id for t in entry_full.tags} == {1000}
# Select the single entry
qt_driver.select_item(entry_full.id, append=False, bridge=False)
qt_driver.toggle_item_selection(entry_full.id, append=False, bridge=False)
panel.update_widgets()
# Add new tag
@@ -64,7 +64,7 @@ def test_add_same_tag_to_selection_single(qt_driver, library, entry_full):
assert {t.id for t in entry_full.tags} == {1000}
# Select the single entry
qt_driver.select_item(entry_full.id, append=False, bridge=False)
qt_driver.toggle_item_selection(entry_full.id, append=False, bridge=False)
panel.update_widgets()
# Add an existing tag
@@ -94,7 +94,7 @@ def test_add_tag_to_selection_multiple(qt_driver, library):
# Select the multiple entries
for i, e in enumerate(library.get_entries(with_joins=True), start=0):
qt_driver.select_item(e.id, append=(True if i == 0 else False), bridge=False) # noqa: SIM210
qt_driver.toggle_item_selection(e.id, append=(True if i == 0 else False), bridge=False) # noqa: SIM210
panel.update_widgets()
# Add new tag
@@ -122,7 +122,7 @@ def test_meta_tag_category(qt_driver, library, entry_full):
library.add_tags_to_entry(1, entry_full.id)
# Select the single entry
qt_driver.select_item(entry_full.id, append=False, bridge=False)
qt_driver.toggle_item_selection(entry_full.id, append=False, bridge=False)
panel.update_widgets()
# FieldContainer should hide all containers
@@ -154,7 +154,7 @@ def test_custom_tag_category(qt_driver, library, entry_full):
library.add_tags_to_entry(1, entry_full.id)
# Select the single entry
qt_driver.select_item(entry_full.id, append=False, bridge=False)
qt_driver.toggle_item_selection(entry_full.id, append=False, bridge=False)
panel.update_widgets()
# FieldContainer should hide all containers

View File

@@ -5,8 +5,8 @@ def test_update_selection_empty(qt_driver, library):
panel = PreviewPanel(library, qt_driver)
# Clear the library selection (selecting 1 then unselecting 1)
qt_driver.select_item(1, append=False, bridge=False)
qt_driver.select_item(1, append=True, bridge=False)
qt_driver.toggle_item_selection(1, append=False, bridge=False)
qt_driver.toggle_item_selection(1, append=True, bridge=False)
panel.update_widgets()
# Panel should disable UI that allows for entry modification
@@ -18,7 +18,7 @@ def test_update_selection_single(qt_driver, library, entry_full):
panel = PreviewPanel(library, qt_driver)
# Select the single entry
qt_driver.select_item(entry_full.id, append=False, bridge=False)
qt_driver.toggle_item_selection(entry_full.id, append=False, bridge=False)
panel.update_widgets()
# Panel should enable UI that allows for entry modification
@@ -30,8 +30,8 @@ def test_update_selection_multiple(qt_driver, library):
panel = PreviewPanel(library, qt_driver)
# Select the multiple entries
qt_driver.select_item(1, append=False, bridge=False)
qt_driver.select_item(2, append=True, bridge=False)
qt_driver.toggle_item_selection(1, append=False, bridge=False)
qt_driver.toggle_item_selection(2, append=True, bridge=False)
panel.update_widgets()
# Panel should enable UI that allows for entry modification

View File

@@ -29,7 +29,7 @@ from src.qt.widgets.item_thumb import ItemThumb
# assert thumb.isVisible() == (idx == 0)
# def test_select_item_bridge(qt_driver, entry_min):
# def test_toggle_item_selection_bridge(qt_driver, entry_min):
# # mock some props since we're not running `start()`
# qt_driver.autofill_action = Mock()
# qt_driver.sort_fields_action = Mock()
@@ -42,22 +42,22 @@ from src.qt.widgets.item_thumb import ItemThumb
# assert len(qt_driver.item_thumbs) == 3
# # select first item
# qt_driver.select_item(0, append=False, bridge=False)
# qt_driver.toggle_item_selection(0, append=False, bridge=False)
# assert qt_driver.selected == [0]
# # add second item to selection
# qt_driver.select_item(1, append=False, bridge=True)
# qt_driver.toggle_item_selection(1, append=False, bridge=True)
# assert qt_driver.selected == [0, 1]
# # add third item to selection
# qt_driver.select_item(2, append=False, bridge=True)
# qt_driver.toggle_item_selection(2, append=False, bridge=True)
# assert qt_driver.selected == [0, 1, 2]
# # select third item only
# qt_driver.select_item(2, append=False, bridge=False)
# qt_driver.toggle_item_selection(2, append=False, bridge=False)
# assert qt_driver.selected == [2]
# qt_driver.select_item(0, append=False, bridge=True)
# qt_driver.toggle_item_selection(0, append=False, bridge=True)
# assert qt_driver.selected == [0, 1, 2]