From 9566791adef22f0f1102bf73f0ba02ae9842b7cf Mon Sep 17 00:00:00 2001 From: Joris Guyonvarch Date: Tue, 30 Dec 2025 16:21:13 +0100 Subject: Use filter and sort function in flow box --- src/filters.py | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) (limited to 'src/filters.py') diff --git a/src/filters.py b/src/filters.py index e81c3cf..ed3cb06 100644 --- a/src/filters.py +++ b/src/filters.py @@ -6,43 +6,59 @@ import src.models as models class Filters(Gtk.Box): - def __init__(self, init_books, progress, genres, genre, msg): + def __init__(self, init_books, init_progress, init_genre, msg): Gtk.Box.__init__(self, spacing=10) + genres = models.get_genres(init_books) + self._progress = init_progress + self._genre = init_genre 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.set_selected(models.all_progress.index(self._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._genres_dropdown = self._get_genres_dropdown(genres) self.append(self._genres_dropdown) + def get_progress(self): + return self._progress + + def get_genre(self): + return self._genre + + def set_genre(self, genre): + self._genre = genre + def select_progress(self, progress): + self._progress = 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): + def actualize_genres(self, books): + genres = models.get_genres(books) + self._genre = self._genre if self._genre in genres else models.all_genres + if self._last_installed_genres != genres: - new_dropdown = self._get_genres_dropdown(genres, genre) + new_dropdown = self._get_genres_dropdown(genres) 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)) + self._genres_dropdown.set_selected(genres.index(self._genre)) - def _get_genres_dropdown(self, genres, genre): + def _get_genres_dropdown(self, genres): self._last_installed_genres = genres dropdown = Gtk.DropDown.new_from_strings(genres) - dropdown.set_selected(genres.index(genre)) + dropdown.set_selected(genres.index(self._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]) + self._progress = dropdown.get_selected_item().get_string() + self._msg(['progress-selected', self._progress]) def _on_selected_genre(self, dropdown, _data): - genre = dropdown.get_selected_item().get_string() - self._msg(['genre-selected', genre]) + self._genre = dropdown.get_selected_item().get_string() + self._msg(['genre-selected', self._genre]) -- cgit v1.2.3