diff options
Diffstat (limited to 'src')
| -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) |
