aboutsummaryrefslogtreecommitdiff
path: root/src/filters.py
diff options
context:
space:
mode:
authorJoris Guyonvarch2025-12-29 17:35:51 +0100
committerJoris Guyonvarch2025-12-29 17:35:51 +0100
commit31d87c86ce2a5f2a8f8aa1d404e39a093e975da7 (patch)
tree3f5e7f20544c3c05137e58803ac24973346d458c /src/filters.py
parent64be629f81dc30f865d84958fc3f68a6217e6482 (diff)
Allow filtering by genre
Diffstat (limited to 'src/filters.py')
-rw-r--r--src/filters.py63
1 files changed, 40 insertions, 23 deletions
diff --git a/src/filters.py b/src/filters.py
index f62eee1..e81c3cf 100644
--- a/src/filters.py
+++ b/src/filters.py
@@ -2,30 +2,47 @@ import gi
gi.require_version("Gtk", "4.0")
from gi.repository import Gtk
-import src.utils as utils
import src.models as models
class Filters(Gtk.Box):
- def __init__(self, init_progress, on_progress_updated):
- Gtk.Box.__init__(self)
-
- self._progress = init_progress
- self._on_progress_updated = on_progress_updated
-
- self._dropdown = Gtk.DropDown.new_from_strings(models.all_progress)
- self._dropdown.set_selected(models.all_progress.index(init_progress))
- self._dropdown.connect('notify::selected-item', self._on_selected_item)
-
- self.append(self._dropdown)
-
- def get_progress(self):
- return self._progress
-
- def update_progress(self, progress):
- self._progress = progress
- self._dropdown.set_selected(models.all_progress.index(progress))
-
- def _on_selected_item(self, _dropdown, _data):
- self._progress = self._dropdown.get_selected_item().get_string()
- self._on_progress_updated(self._progress)
+ def __init__(self, init_books, progress, genres, genre, msg):
+ Gtk.Box.__init__(self, spacing=10)
+
+ self._msg = msg
+
+ self._progress_dropdown = Gtk.DropDown.new_from_strings(models.all_progress)
+ self._progress_dropdown.set_selected(models.all_progress.index(progress))
+ self._progress_dropdown.connect('notify::selected-item', self._on_selected_progress)
+ self.append(self._progress_dropdown)
+
+ self._genres_dropdown = self._get_genres_dropdown(genres, genre)
+ self.append(self._genres_dropdown)
+
+ def select_progress(self, progress):
+ self._progress_dropdown.set_selected(models.all_progress.index(progress))
+
+ # Hacky, this replaces the dropdown by a new one
+ def actualize_genres(self, genres, genre):
+ if self._last_installed_genres != genres:
+ new_dropdown = self._get_genres_dropdown(genres, genre)
+ self.insert_child_after(new_dropdown, self._genres_dropdown)
+ self.remove(self._genres_dropdown)
+ self._genres_dropdown = new_dropdown
+ else:
+ self._genres_dropdown.set_selected(genres.index(genre))
+
+ def _get_genres_dropdown(self, genres, genre):
+ self._last_installed_genres = genres
+ dropdown = Gtk.DropDown.new_from_strings(genres)
+ dropdown.set_selected(genres.index(genre))
+ dropdown.connect('notify::selected-item', self._on_selected_genre)
+ return dropdown
+
+ def _on_selected_progress(self, dropdown, _data):
+ progress = dropdown.get_selected_item().get_string()
+ self._msg(['progress-selected', progress])
+
+ def _on_selected_genre(self, dropdown, _data):
+ genre = dropdown.get_selected_item().get_string()
+ self._msg(['genre-selected', genre])