diff options
| author | Joris Guyonvarch | 2025-12-27 22:39:06 +0100 |
|---|---|---|
| committer | Joris Guyonvarch | 2025-12-27 22:39:06 +0100 |
| commit | b5bbf24d461b5d107c951131ab8bf6b9c9b01a1f (patch) | |
| tree | 55b33b9838f75c2a9d50d598a681d632cc44df7c | |
| parent | d5e22d08a176d91bb9a5ba4b84159cec3ef06088 (diff) | |
Add download button on detail dialog
| -rw-r--r-- | src/book_detail.py | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/book_detail.py b/src/book_detail.py index 168a212..f20d89f 100644 --- a/src/book_detail.py +++ b/src/book_detail.py @@ -3,9 +3,13 @@ gi.require_version('Gtk', '4.0') from gi.repository import Gtk import os import subprocess +import shutil +import os.path +import pathlib import src.utils as utils import src.book_files as book_files +import src.str_format as str_format class BookDetail(Gtk.Window): @@ -40,18 +44,32 @@ class BookDetail(Gtk.Window): box.append(utils.label(data['summary'])) for path in book_files.get(library, book_id): - box.append(book_line(path)) + box.append(book_line(book_id, data, path)) def has_info(data, key): return key in data and data[key] -def book_line(path): +def book_line(book_id, data, path): box = Gtk.Box(spacing=20) box.append(utils.label(os.path.basename(path))) + open_button = Gtk.Button(label='Ouvrir') open_button.connect('clicked', lambda _: open_book(path)) box.append(open_button) + + download_button = Gtk.Button(label='Télécharger') + download_button.connect('clicked', lambda _: download_book(book_id, data, path)) + box.append(download_button) + return box def open_book(path): subprocess.run(['xdg-open', path]) + +def download_book(book_id, data, path): + home = pathlib.Path.home() + safe_author = str_format.safe_path(data['authors'][0]) if len(data['authors']) > 0 else book_id + safe_title = str_format.safe_path(data['title']) + basename = str_format.safe_path(os.path.basename(path)) + dest = f'{home}/downloads/{safe_author}-{safe_title}-{basename}' + shutil.copyfile(path, dest) |
