aboutsummaryrefslogtreecommitdiff
path: root/src/book_detail.py
diff options
context:
space:
mode:
authorJoris Guyonvarch2025-12-27 22:39:06 +0100
committerJoris Guyonvarch2025-12-27 22:39:06 +0100
commitb5bbf24d461b5d107c951131ab8bf6b9c9b01a1f (patch)
tree55b33b9838f75c2a9d50d598a681d632cc44df7c /src/book_detail.py
parentd5e22d08a176d91bb9a5ba4b84159cec3ef06088 (diff)
Add download button on detail dialog
Diffstat (limited to 'src/book_detail.py')
-rw-r--r--src/book_detail.py22
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)