diff options
| author | Joris Guyonvarch | 2025-12-30 16:21:13 +0100 |
|---|---|---|
| committer | Joris Guyonvarch | 2025-12-30 16:21:13 +0100 |
| commit | 9566791adef22f0f1102bf73f0ba02ae9842b7cf (patch) | |
| tree | cdc425c3278f8d315a94b678bbcec075774e316c /src/main_window.py | |
| parent | 39445241faa46513bd676e5dfbc485414017299b (diff) | |
Use filter and sort function in flow box
Diffstat (limited to 'src/main_window.py')
| -rw-r--r-- | src/main_window.py | 46 |
1 files changed, 18 insertions, 28 deletions
diff --git a/src/main_window.py b/src/main_window.py index 5053a81..c01c120 100644 --- a/src/main_window.py +++ b/src/main_window.py @@ -18,51 +18,41 @@ class MainWindow(Gtk.ApplicationWindow): utils.set_header_bar(self, 'Books') - # State - self._books = db.get_books(conn) - self._progress = 'Reading' - self._genres = models.get_genres(self._books) - self._genre = models.all_genres + init_books = db.get_books(conn) + init_progress = 'Reading' + init_genre = models.all_genres add_book_button = Gtk.Button(label='Ajouter un livre') - add_book_button.connect('clicked', lambda _: BookForm(self, resources, library, conn, self._progress, self._msg).present()) + add_book_button.connect('clicked', lambda _: BookForm(self, resources, library, conn, self._msg).present()) header = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) utils.set_margin(header, 20) - self._filters = Filters(self._books, self._progress, self._genres, self._genre, self._msg) + self._filters = Filters(init_books, init_progress, init_genre, self._msg) self._filters.set_hexpand(True) header.append(self._filters) header.append(add_book_button) box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0) box.append(header) - self._book_flow = BookFlow(self, resources, library, ereader, conn, self._books, self._progress, self._genre, self._msg) - box.append(self._book_flow) + self._books = BookFlow(self, resources, library, ereader, conn, init_books, init_progress, init_genre, self._msg) + box.append(self._books) self.set_child(box) def _msg(self, msg): match msg: case ['progress-selected', progress]: - self._progress = progress - self._book_flow.reset(self._books, self._progress, self._genre) + self._books.update_filters(self._filters.get_progress(), self._filters.get_genre()) case ['genre-selected', genre]: - self._genre = genre - self._book_flow.reset(self._books, self._progress, self._genre) + self._books.update_filters(self._filters.get_progress(), self._filters.get_genre()) case ['book-saved', book_id, data]: - self._books[book_id] = data - self._progress = data['progress'] self._filters.select_progress(data['progress']) - if not self._genre in data['genres']: - self._genre = models.all_genres - self._actualize_genres() - self._book_flow.reset(self._books, self._progress, self._genre, book_id) - self._book_flow.select_book(book_id) + if not self._filters.get_genre() in data['genres']: + self._filters.set_genre(models.all_genres) + self._filters.actualize_genres(self._books.get()) + if book_id in self._books.get(): + self._books.remove(book_id) + self._books.add(book_id, data) + self._books.select_book(book_id) case ['book-deleted', book_id, data]: - del self._books[book_id] - self._actualize_genres() - self._book_flow.reset(self._books, self._progress, self._genre) - - def _actualize_genres(self): - self._genres = models.get_genres(self._books) - self._genre = self._genre if self._genre in self._genres else models.all_genres - self._filters.actualize_genres(self._genres, self._genre) + self._filters.actualize_genres(self._books.get()) + self._books.remove(book_id) |
