aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/book_detail.py40
-rw-r--r--src/book_flow.py13
-rw-r--r--src/book_transfer.py28
3 files changed, 40 insertions, 41 deletions
diff --git a/src/book_detail.py b/src/book_detail.py
index 49ee8a7..9c36d9b 100644
--- a/src/book_detail.py
+++ b/src/book_detail.py
@@ -10,14 +10,18 @@ import pathlib
import src.utils as utils
import src.book_files as book_files
import src.str_format as str_format
+from src.book_transfer import BookTransfer
class BookDetail(Gtk.Window):
- def __init__(self, parent_window, library, book_id, data):
+ def __init__(self, parent_window, library, ereader, book_id, data):
Gtk.Window.__init__(self)
utils.configure_dialog(self, parent_window, data['title'], height=800)
+ self._library = library
+ self._ereader = ereader
+
scrolled_window = Gtk.ScrolledWindow()
self.set_child(scrolled_window)
@@ -44,24 +48,32 @@ class BookDetail(Gtk.Window):
box.append(utils.label(data['summary']))
for path in book_files.get(library, book_id):
- box.append(book_line(book_id, data, path))
+ box.append(self._book_line(book_id, data, path))
-def has_info(data, key):
- return key in data and data[key]
+ def _book_line(self, 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)
-def book_line(book_id, data, path):
- box = Gtk.Box(spacing=20)
- box.append(utils.label(os.path.basename(path)))
+ download_button = Gtk.Button(label='Télécharger')
+ download_button.connect('clicked', lambda _: download_book(book_id, data, path))
+ box.append(download_button)
- open_button = Gtk.Button(label='Ouvrir')
- open_button.connect('clicked', lambda _: open_book(path))
- box.append(open_button)
+ if self._ereader and os.path.exists(self._ereader):
+ transfer_button = Gtk.Button(label='Transférer')
+ transfer_button.connect('clicked', lambda _: self._transfer_book(book_id, data, path))
+ box.append(transfer_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
- return box
+ def _transfer_book(self, book_id, data, path):
+ BookTransfer(self, self._ereader, book_id, data, path).present()
+
+def has_info(data, key):
+ return key in data and data[key]
def open_book(path):
subprocess.run(['xdg-open', path])
diff --git a/src/book_flow.py b/src/book_flow.py
index 25dfa73..eb0c6d8 100644
--- a/src/book_flow.py
+++ b/src/book_flow.py
@@ -13,7 +13,6 @@ import src.models as models
from src.book_detail import BookDetail
from src.book_delete import BookDelete
from src.book_form import BookForm
-from src.book_transfer import BookTransfer
from src.picture_cache import PictureCache
import src.book_files as book_files
import src.str_format as str_format
@@ -145,17 +144,10 @@ class BookFlow(Gtk.ScrolledWindow):
delete_button.connect('clicked', lambda _: self._confirm_delete_book(book_id, data))
box.append(delete_button)
- if self._ereader and os.path.exists(self._ereader):
- paths = book_files.get(self._library, book_id)
- if paths:
- transfer_button = Gtk.Button(label='Transférer')
- transfer_button.connect('clicked', lambda _: self._transfer_book(book_id, data, paths))
- box.append(transfer_button)
-
popover.popup()
def _open_detail(self, book_id, data):
- BookDetail(self._window, self._library, book_id, data).present()
+ BookDetail(self._window, self._library, self._ereader, book_id, data).present()
def _update_book(self, book_id, data):
book = {'id': book_id, 'data': data }
@@ -169,9 +161,6 @@ class BookFlow(Gtk.ScrolledWindow):
shutil.rmtree(f'{self._library}/{book_id}', ignore_errors=True)
self._msg(['book-deleted', book_id, data])
- def _transfer_book(self, book_id, data, paths):
- BookTransfer(self._window, self._ereader, book_id, data, paths).present()
-
def author_key(data):
match data['authors']:
case [author, *_]:
diff --git a/src/book_transfer.py b/src/book_transfer.py
index 3bda52f..073fa9c 100644
--- a/src/book_transfer.py
+++ b/src/book_transfer.py
@@ -12,13 +12,13 @@ import src.str_format as str_format
class BookTransfer(Gtk.Window):
- def __init__(self, parent_window, ereader, book_id, data, paths):
+ def __init__(self, parent_window, ereader, book_id, data, path):
Gtk.Window.__init__(self)
self._ereader = ereader
self._book_id = book_id
self._data = data
- self._paths = paths
+ self._path = path
utils.configure_dialog(self, parent_window, data['title'], width=None, height=None, allow_escape=False)
@@ -26,9 +26,8 @@ class BookTransfer(Gtk.Window):
self.set_child(self._box)
utils.set_margin(self._box, 20)
- for path in paths:
- basename = os.path.basename(path)
- self._box.append(utils.label(basename))
+ basename = os.path.basename(path)
+ self._box.append(utils.label(basename))
self._spinner = Gtk.Spinner()
self._spinner.start()
@@ -43,24 +42,23 @@ class BookTransfer(Gtk.Window):
self._box.append(utils.label('✔'))
def _transfer_books_daemon(self):
- for path in self._paths:
- self._transfer_book(path)
+ self._transfer_book()
GLib.idle_add(self._complete_animation)
- def _transfer_book(self, path):
- dest = self._dest_name(path)
- if path.suffix in ['.mobi', '.azw3']:
+ def _transfer_book(self):
+ dest = self._dest_name()
+ if self._path.suffix in ['.mobi', '.azw3']:
# Copy
os.makedirs(os.path.dirname(dest), exist_ok=True)
- shutil.copyfile(path, dest)
+ shutil.copyfile(self._path, dest)
else:
# Convert
os.makedirs(os.path.dirname(dest), exist_ok=True)
- subprocess.run(['ebook-convert', path, dest])
+ subprocess.run(['ebook-convert', self._path, dest])
- def _dest_name(self, path):
+ def _dest_name(self):
safe_author = str_format.safe_path(self._data['authors'][0]) if len(self._data['authors']) > 0 else self._book_id
safe_title = str_format.safe_path(self._data['title'])
- basename_no_ext = str_format.safe_path(os.path.splitext(os.path.basename(path))[0])
- ext = path.suffix if path.suffix in ['.mobi', '.azw3'] else '.mobi'
+ basename_no_ext = str_format.safe_path(os.path.splitext(os.path.basename(self._path))[0])
+ ext = self._path.suffix if self._path.suffix in ['.mobi', '.azw3'] else '.mobi'
return f'{self._ereader}/{safe_author}-{safe_title}-{basename_no_ext}{ext}'