diff --git a/src/ffx/track_details_screen.py b/src/ffx/track_details_screen.py index 5c37ce8..41fabb3 100644 --- a/src/ffx/track_details_screen.py +++ b/src/ffx/track_details_screen.py @@ -1,7 +1,7 @@ import click from textual.screen import Screen -from textual.widgets import Header, Footer, Static, Button, SelectionList, Select, DataTable, Input, Checkbox +from textual.widgets import Header, Footer, Static, Button, SelectionList, Select, DataTable, Input from textual.containers import Grid from textual.widgets._data_table import CellDoesNotExist @@ -256,7 +256,9 @@ class TrackDetailsScreen(Screen): self.query_one("#type_select", Select).value = self.__trackType self.query_one("#audio_layout_select", Select).value = self.__audioLayout - self.query_one("#drop_checkbox", Checkbox).value = self.__dropped + self.query_one("#drop_checkbox", SelectionList).add_option( + (t("Yes"), 0, self.__dropped) + ) for disposition in TrackDisposition: @@ -286,7 +288,7 @@ class TrackDetailsScreen(Screen): if self.__metadataOnly: self.query_one("#type_select", Select).disabled = True self.query_one("#audio_layout_select", Select).disabled = True - self.query_one("#drop_checkbox", Checkbox).disabled = True + self.query_one("#drop_checkbox", SelectionList).disabled = True def on_select_changed(self, event: Select.Changed) -> None: if event.select.id == "language_select": @@ -349,7 +351,7 @@ class TrackDetailsScreen(Screen): # Row 8 yield Static(t("Drop")) - yield Checkbox(id="drop_checkbox", classes="four") + yield SelectionList[int](id="drop_checkbox", classes="four") # Row 9 yield Static(" ", classes="five") @@ -468,7 +470,7 @@ class TrackDetailsScreen(Screen): kwargs[TrackDescriptor.TAGS_KEY] = trackTags kwargs[TrackDescriptor.DROPPED_KEY] = bool( - self.query_one("#drop_checkbox", Checkbox).value + self.query_one("#drop_checkbox", SelectionList).selected ) dispositionFlags = sum( diff --git a/tests/unit/test_tag_table_screen_state.py b/tests/unit/test_tag_table_screen_state.py index 0f6c378..4d37a61 100644 --- a/tests/unit/test_tag_table_screen_state.py +++ b/tests/unit/test_tag_table_screen_state.py @@ -126,6 +126,7 @@ class FakeStaticWidget: class FakeSelectionListWidget: def __init__(self, selected): self.selected = selected + self.disabled = False def add_option(self, _option): return None @@ -189,7 +190,7 @@ class TagTableScreenStateTests(unittest.TestCase): widgets = { "#type_select": FakeValueWidget(TrackType.AUDIO), "#audio_layout_select": FakeValueWidget(AudioLayout.LAYOUT_STEREO), - "#drop_checkbox": FakeValueWidget(True), + "#drop_checkbox": FakeSelectionListWidget({0}), "#language_select": FakeValueWidget(IsoLanguage.GERMAN), "#title_input": FakeInputWidget("German Audio"), "#dispositions_selection_list": FakeSelectionListWidget({0, 6}), @@ -219,7 +220,7 @@ class TagTableScreenStateTests(unittest.TestCase): widgets = { "#type_select": FakeValueWidget(TrackType.ATTACHMENT), "#audio_layout_select": FakeValueWidget(AudioLayout.LAYOUT_UNDEFINED), - "#drop_checkbox": FakeValueWidget(False), + "#drop_checkbox": FakeSelectionListWidget(set()), "#language_select": FakeValueWidget(Select.NULL), "#title_input": FakeInputWidget(""), "#dispositions_selection_list": FakeSelectionListWidget(set()), @@ -328,7 +329,7 @@ class TagTableScreenStateTests(unittest.TestCase): "#pattern_label": FakeStaticWidget(), "#type_select": FakeValueWidget(None), "#audio_layout_select": FakeValueWidget(None), - "#drop_checkbox": FakeValueWidget(False), + "#drop_checkbox": FakeSelectionListWidget(set()), "#dispositions_selection_list": FakeSelectionListWidget(set()), "#language_select": FakeValueWidget(None), "#title_input": FakeInputWidget(""),