From dfe0fceea9fe78f21923fc51a18b14eb45c3819c Mon Sep 17 00:00:00 2001 From: BasioMeusPuga Date: Thu, 31 Jan 2019 12:26:40 +0530 Subject: [PATCH] Small fixes Compulsive refactor --- TODO | 6 ++---- lector/__main__.py | 24 ++++++++++-------------- lector/annotations.py | 2 ++ lector/dockwidgets.py | 33 ++++++++++++++++++--------------- lector/parsers/mobi.py | 12 +++++++++--- 5 files changed, 41 insertions(+), 36 deletions(-) diff --git a/TODO b/TODO index 21173a6..8ac10c4 100644 --- a/TODO +++ b/TODO @@ -64,7 +64,7 @@ TODO ✓ Spacebar should not cut off lines at the top ✓ Track open bookmark windows so they can be closed quickly at exit ✓ Search document using QTextCursor - Double page / column view + ✓ Double page / column view ✓ For comics Caching is currently non functional Annotations @@ -73,7 +73,7 @@ TODO Adjust key navigation according to viewport dimensions Filetypes: ✓ pdf support - Parse TOC + ✓ Parse TOC ✓ epub support ✓ Homegrown solution please ✓ cbz, cbr support @@ -90,8 +90,6 @@ TODO ✓ Define every widget in code Bugs: Deselecting all directories in the settings dialog also filters out manually added books - Clean up 'switch' page layout - Colors aren't loaded properly for annotation previews Last line in QTextBrowser should never be cut off Does image alignment need to be centered? diff --git a/lector/__main__.py b/lector/__main__.py index fc56771..66abd32 100755 --- a/lector/__main__.py +++ b/lector/__main__.py @@ -29,6 +29,8 @@ install_dir = os.path.realpath(__file__) install_dir = pathlib.Path(install_dir).parents[1] sys.path.append(str(install_dir)) +from PyQt5 import QtWidgets, QtGui, QtCore + # Init logging # Must be done first and at the module level # or it won't work properly in case of the imports below @@ -36,8 +38,6 @@ from lector.logger import init_logging logger = init_logging(sys.argv) logger.log(60, 'Application started') -from PyQt5 import QtWidgets, QtGui, QtCore - from lector import database from lector import sorter from lector.toolbars import LibraryToolBar, BookToolBar @@ -178,15 +178,18 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): self.libraryToolBar.tableViewButton.trigger() # Book toolbar - self.bookToolBar.addBookmarkButton.triggered.connect(self.add_bookmark) + self.bookToolBar.addBookmarkButton.triggered.connect( + lambda: self.tabWidget.currentWidget().sideDock.bookmarks.add_bookmark()) self.bookToolBar.bookmarkButton.triggered.connect( lambda: self.tabWidget.currentWidget().toggle_side_dock(0)) self.bookToolBar.annotationButton.triggered.connect( lambda: self.tabWidget.currentWidget().toggle_side_dock(1)) self.bookToolBar.searchButton.triggered.connect( lambda: self.tabWidget.currentWidget().toggle_side_dock(2)) - self.bookToolBar.distractionFreeButton.triggered.connect(self.toggle_distraction_free) - self.bookToolBar.fullscreenButton.triggered.connect(self.set_fullscreen) + self.bookToolBar.distractionFreeButton.triggered.connect( + self.toggle_distraction_free) + self.bookToolBar.fullscreenButton.triggered.connect( + lambda: self.tabWidget.currentWidget().go_fullscreen()) self.bookToolBar.doublePageButton.triggered.connect(self.change_page_view) self.bookToolBar.mangaModeButton.triggered.connect(self.change_page_view) @@ -460,11 +463,6 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): if self.settings['perform_culling']: self.culling_timer.start(30) - def add_bookmark(self): - if self.tabWidget.currentIndex() != 0: - current_tab = self.tabWidget.currentWidget() - current_tab.sideDock.bookmarks.add_bookmark() - def resizeEvent(self, event=None): if event: # This implies a vertical resize event only @@ -561,7 +559,8 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): delete_hashes = [ self.lib_ref.libraryModel.data( i, QtCore.Qt.UserRole + 6) for i in selected_indexes] - persistent_indexes = [QtCore.QPersistentModelIndex(i) for i in selected_indexes] + persistent_indexes = [ + QtCore.QPersistentModelIndex(i) for i in selected_indexes] for i in persistent_indexes: self.lib_ref.libraryModel.removeRow(i.row()) @@ -727,9 +726,6 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): current_tab = self.tabWidget.currentWidget() current_tab.set_content(required_position) - def set_fullscreen(self): - self.tabWidget.currentWidget().go_fullscreen() - def library_doubleclick(self, index): sender = self.sender().objectName() diff --git a/lector/annotations.py b/lector/annotations.py index d043b1b..75f526e 100644 --- a/lector/annotations.py +++ b/lector/annotations.py @@ -89,6 +89,7 @@ class AnnotationsUI(QtWidgets.QDialog, annotationswindow.Ui_Dialog): if 'foregroundColor' in annotation_components: self.foregroundCheck.setChecked(True) + self.foregroundColor = annotation_components['foregroundColor'] self.set_button_background_color( self.foregroundColorButton, annotation_components['foregroundColor']) else: @@ -96,6 +97,7 @@ class AnnotationsUI(QtWidgets.QDialog, annotationswindow.Ui_Dialog): if 'highlightColor' in annotation_components: self.highlightCheck.setChecked(True) + self.highlightColor = annotation_components['highlightColor'] self.set_button_background_color( self.highlightColorButton, annotation_components['highlightColor']) else: diff --git a/lector/dockwidgets.py b/lector/dockwidgets.py index 65063d9..363a9ad 100644 --- a/lector/dockwidgets.py +++ b/lector/dockwidgets.py @@ -118,8 +118,10 @@ class Bookmarks: self.parent = parent self.parentTab = self.parent.parent self.bookmarkTreeView = QtWidgets.QTreeView(self.parent) + self._translate = QtCore.QCoreApplication.translate self.bookmarks_string = self._translate('SideDock', 'Bookmarks') + self.bookmark_default = self._translate('SideDock', 'New bookmark') self.create_widgets() @@ -136,7 +138,6 @@ class Bookmarks: def add_bookmark(self, position=None): identifier = uuid.uuid4().hex[:10] - description = self._translate('SideDock', 'New bookmark') if self.parentTab.are_we_doing_images_only: chapter = self.parentTab.metadata['position']['current_chapter'] @@ -149,12 +150,12 @@ class Bookmarks: self.parentTab.metadata['bookmarks'][identifier] = { 'chapter': chapter, 'cursor_position': cursor_position, - 'description': description} + 'description': self.bookmark_default} self.parent.setVisible(True) self.parent.sideDockTabWidget.setCurrentIndex(0) self.add_bookmark_to_model( - description, chapter, cursor_position, identifier, True) + self.bookmark_default, chapter, cursor_position, identifier, True) def add_bookmark_to_model( self, description, chapter_number, cursor_position, @@ -276,13 +277,15 @@ class Bookmarks: if action == deleteAction: child_index = self.parent.bookmarkProxyModel.mapToSource(index) parent_index = child_index.parent() - child_rows = self.parent.bookmarkModel.itemFromIndex(parent_index).rowCount() + child_rows = self.parent.bookmarkModel.itemFromIndex( + parent_index).rowCount() delete_uuid = self.parent.bookmarkModel.data( child_index, QtCore.Qt.UserRole + 2) self.parentTab.metadata['bookmarks'].pop(delete_uuid) - self.parent.bookmarkModel.removeRow(child_index.row(), child_index.parent()) + self.parent.bookmarkModel.removeRow( + child_index.row(), child_index.parent()) if child_rows == 1: self.parent.bookmarkModel.removeRow(parent_index.row()) @@ -292,6 +295,7 @@ class Annotations: self.parent = parent self.parentTab = self.parent.parent self.annotationListView = QtWidgets.QListView(self.parent) + self._translate = QtCore.QCoreApplication.translate self.annotations_string = self._translate('SideDock', 'Annotations') @@ -339,6 +343,12 @@ class Search: self.matchWholeWordButton = QtWidgets.QToolButton(self.parent) self.searchResultsTreeView = QtWidgets.QTreeView(self.parent) + self._translate = QtCore.QCoreApplication.translate + self.search_string = self._translate('SideDock', 'Search') + self.search_book_string = self._translate('SideDock', 'Search entire book') + self.case_sensitive_string = self._translate('SideDock', 'Match case') + self.match_word_string = self._translate('SideDock', 'Match word') + self.create_widgets() def create_widgets(self): @@ -361,32 +371,25 @@ class Search: self.searchLineEdit.setFocusPolicy(QtCore.Qt.StrongFocus) self.searchLineEdit.setClearButtonEnabled(True) - self._translate = QtCore.QCoreApplication.translate - self.search_string = self._translate('SideDock', 'Search') self.searchLineEdit.setPlaceholderText(self.search_string) - search_book_string = self._translate('SideDock', 'Search entire book') - self.searchBookButton.setIcon( self.parent.main_window.QImageFactory.get_image('view-readermode')) - self.searchBookButton.setToolTip(search_book_string) + self.searchBookButton.setToolTip(self.search_book_string) self.searchBookButton.setCheckable(True) self.searchBookButton.setAutoRaise(True) self.searchBookButton.setIconSize(QtCore.QSize(20, 20)) - case_sensitive_string = self._translate('SideDock', 'Match case') - self.caseSensitiveSearchButton.setIcon( self.parent.main_window.QImageFactory.get_image('search-case')) - self.caseSensitiveSearchButton.setToolTip(case_sensitive_string) + self.caseSensitiveSearchButton.setToolTip(self.case_sensitive_string) self.caseSensitiveSearchButton.setCheckable(True) self.caseSensitiveSearchButton.setAutoRaise(True) self.caseSensitiveSearchButton.setIconSize(QtCore.QSize(20, 20)) - match_word_string = self._translate('SideDock', 'Match word') self.matchWholeWordButton.setIcon( self.parent.main_window.QImageFactory.get_image('search-word')) - self.matchWholeWordButton.setToolTip(match_word_string) + self.matchWholeWordButton.setToolTip(self.match_word_string) self.matchWholeWordButton.setCheckable(True) self.matchWholeWordButton.setAutoRaise(True) self.matchWholeWordButton.setIconSize(QtCore.QSize(20, 20)) diff --git a/lector/parsers/mobi.py b/lector/parsers/mobi.py index e0537a7..ee2c59a 100644 --- a/lector/parsers/mobi.py +++ b/lector/parsers/mobi.py @@ -86,9 +86,15 @@ class ParseMOBI: self.book_ref.parse_chapters( temp_dir=self.temp_dir, split_large_xml=self.split_large_xml) - file_settings = { - 'images_only': False} - return self.book['book_list'], file_settings + + toc = [] + content = [] + for count, i in enumerate(self.book['book_list']): + toc.append((1, i[0], count + 1)) + content.append(i[1]) + + # Return toc, content, images_only + return toc, content, False class HidePrinting: def __enter__(self):