Small fixes
Compulsive refactor
This commit is contained in:
6
TODO
6
TODO
@@ -64,7 +64,7 @@ TODO
|
|||||||
✓ Spacebar should not cut off lines at the top
|
✓ Spacebar should not cut off lines at the top
|
||||||
✓ Track open bookmark windows so they can be closed quickly at exit
|
✓ Track open bookmark windows so they can be closed quickly at exit
|
||||||
✓ Search document using QTextCursor
|
✓ Search document using QTextCursor
|
||||||
Double page / column view
|
✓ Double page / column view
|
||||||
✓ For comics
|
✓ For comics
|
||||||
Caching is currently non functional
|
Caching is currently non functional
|
||||||
Annotations
|
Annotations
|
||||||
@@ -73,7 +73,7 @@ TODO
|
|||||||
Adjust key navigation according to viewport dimensions
|
Adjust key navigation according to viewport dimensions
|
||||||
Filetypes:
|
Filetypes:
|
||||||
✓ pdf support
|
✓ pdf support
|
||||||
Parse TOC
|
✓ Parse TOC
|
||||||
✓ epub support
|
✓ epub support
|
||||||
✓ Homegrown solution please
|
✓ Homegrown solution please
|
||||||
✓ cbz, cbr support
|
✓ cbz, cbr support
|
||||||
@@ -90,8 +90,6 @@ TODO
|
|||||||
✓ Define every widget in code
|
✓ Define every widget in code
|
||||||
Bugs:
|
Bugs:
|
||||||
Deselecting all directories in the settings dialog also filters out manually added books
|
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
|
Last line in QTextBrowser should never be cut off
|
||||||
Does image alignment need to be centered?
|
Does image alignment need to be centered?
|
||||||
|
|
||||||
|
@@ -29,6 +29,8 @@ install_dir = os.path.realpath(__file__)
|
|||||||
install_dir = pathlib.Path(install_dir).parents[1]
|
install_dir = pathlib.Path(install_dir).parents[1]
|
||||||
sys.path.append(str(install_dir))
|
sys.path.append(str(install_dir))
|
||||||
|
|
||||||
|
from PyQt5 import QtWidgets, QtGui, QtCore
|
||||||
|
|
||||||
# Init logging
|
# Init logging
|
||||||
# Must be done first and at the module level
|
# Must be done first and at the module level
|
||||||
# or it won't work properly in case of the imports below
|
# 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 = init_logging(sys.argv)
|
||||||
logger.log(60, 'Application started')
|
logger.log(60, 'Application started')
|
||||||
|
|
||||||
from PyQt5 import QtWidgets, QtGui, QtCore
|
|
||||||
|
|
||||||
from lector import database
|
from lector import database
|
||||||
from lector import sorter
|
from lector import sorter
|
||||||
from lector.toolbars import LibraryToolBar, BookToolBar
|
from lector.toolbars import LibraryToolBar, BookToolBar
|
||||||
@@ -178,15 +178,18 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
|||||||
self.libraryToolBar.tableViewButton.trigger()
|
self.libraryToolBar.tableViewButton.trigger()
|
||||||
|
|
||||||
# Book toolbar
|
# 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(
|
self.bookToolBar.bookmarkButton.triggered.connect(
|
||||||
lambda: self.tabWidget.currentWidget().toggle_side_dock(0))
|
lambda: self.tabWidget.currentWidget().toggle_side_dock(0))
|
||||||
self.bookToolBar.annotationButton.triggered.connect(
|
self.bookToolBar.annotationButton.triggered.connect(
|
||||||
lambda: self.tabWidget.currentWidget().toggle_side_dock(1))
|
lambda: self.tabWidget.currentWidget().toggle_side_dock(1))
|
||||||
self.bookToolBar.searchButton.triggered.connect(
|
self.bookToolBar.searchButton.triggered.connect(
|
||||||
lambda: self.tabWidget.currentWidget().toggle_side_dock(2))
|
lambda: self.tabWidget.currentWidget().toggle_side_dock(2))
|
||||||
self.bookToolBar.distractionFreeButton.triggered.connect(self.toggle_distraction_free)
|
self.bookToolBar.distractionFreeButton.triggered.connect(
|
||||||
self.bookToolBar.fullscreenButton.triggered.connect(self.set_fullscreen)
|
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.doublePageButton.triggered.connect(self.change_page_view)
|
||||||
self.bookToolBar.mangaModeButton.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']:
|
if self.settings['perform_culling']:
|
||||||
self.culling_timer.start(30)
|
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):
|
def resizeEvent(self, event=None):
|
||||||
if event:
|
if event:
|
||||||
# This implies a vertical resize event only
|
# This implies a vertical resize event only
|
||||||
@@ -561,7 +559,8 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
|||||||
delete_hashes = [
|
delete_hashes = [
|
||||||
self.lib_ref.libraryModel.data(
|
self.lib_ref.libraryModel.data(
|
||||||
i, QtCore.Qt.UserRole + 6) for i in selected_indexes]
|
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:
|
for i in persistent_indexes:
|
||||||
self.lib_ref.libraryModel.removeRow(i.row())
|
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 = self.tabWidget.currentWidget()
|
||||||
current_tab.set_content(required_position)
|
current_tab.set_content(required_position)
|
||||||
|
|
||||||
def set_fullscreen(self):
|
|
||||||
self.tabWidget.currentWidget().go_fullscreen()
|
|
||||||
|
|
||||||
def library_doubleclick(self, index):
|
def library_doubleclick(self, index):
|
||||||
sender = self.sender().objectName()
|
sender = self.sender().objectName()
|
||||||
|
|
||||||
|
@@ -89,6 +89,7 @@ class AnnotationsUI(QtWidgets.QDialog, annotationswindow.Ui_Dialog):
|
|||||||
|
|
||||||
if 'foregroundColor' in annotation_components:
|
if 'foregroundColor' in annotation_components:
|
||||||
self.foregroundCheck.setChecked(True)
|
self.foregroundCheck.setChecked(True)
|
||||||
|
self.foregroundColor = annotation_components['foregroundColor']
|
||||||
self.set_button_background_color(
|
self.set_button_background_color(
|
||||||
self.foregroundColorButton, annotation_components['foregroundColor'])
|
self.foregroundColorButton, annotation_components['foregroundColor'])
|
||||||
else:
|
else:
|
||||||
@@ -96,6 +97,7 @@ class AnnotationsUI(QtWidgets.QDialog, annotationswindow.Ui_Dialog):
|
|||||||
|
|
||||||
if 'highlightColor' in annotation_components:
|
if 'highlightColor' in annotation_components:
|
||||||
self.highlightCheck.setChecked(True)
|
self.highlightCheck.setChecked(True)
|
||||||
|
self.highlightColor = annotation_components['highlightColor']
|
||||||
self.set_button_background_color(
|
self.set_button_background_color(
|
||||||
self.highlightColorButton, annotation_components['highlightColor'])
|
self.highlightColorButton, annotation_components['highlightColor'])
|
||||||
else:
|
else:
|
||||||
|
@@ -118,8 +118,10 @@ class Bookmarks:
|
|||||||
self.parent = parent
|
self.parent = parent
|
||||||
self.parentTab = self.parent.parent
|
self.parentTab = self.parent.parent
|
||||||
self.bookmarkTreeView = QtWidgets.QTreeView(self.parent)
|
self.bookmarkTreeView = QtWidgets.QTreeView(self.parent)
|
||||||
|
|
||||||
self._translate = QtCore.QCoreApplication.translate
|
self._translate = QtCore.QCoreApplication.translate
|
||||||
self.bookmarks_string = self._translate('SideDock', 'Bookmarks')
|
self.bookmarks_string = self._translate('SideDock', 'Bookmarks')
|
||||||
|
self.bookmark_default = self._translate('SideDock', 'New bookmark')
|
||||||
|
|
||||||
self.create_widgets()
|
self.create_widgets()
|
||||||
|
|
||||||
@@ -136,7 +138,6 @@ class Bookmarks:
|
|||||||
|
|
||||||
def add_bookmark(self, position=None):
|
def add_bookmark(self, position=None):
|
||||||
identifier = uuid.uuid4().hex[:10]
|
identifier = uuid.uuid4().hex[:10]
|
||||||
description = self._translate('SideDock', 'New bookmark')
|
|
||||||
|
|
||||||
if self.parentTab.are_we_doing_images_only:
|
if self.parentTab.are_we_doing_images_only:
|
||||||
chapter = self.parentTab.metadata['position']['current_chapter']
|
chapter = self.parentTab.metadata['position']['current_chapter']
|
||||||
@@ -149,12 +150,12 @@ class Bookmarks:
|
|||||||
self.parentTab.metadata['bookmarks'][identifier] = {
|
self.parentTab.metadata['bookmarks'][identifier] = {
|
||||||
'chapter': chapter,
|
'chapter': chapter,
|
||||||
'cursor_position': cursor_position,
|
'cursor_position': cursor_position,
|
||||||
'description': description}
|
'description': self.bookmark_default}
|
||||||
|
|
||||||
self.parent.setVisible(True)
|
self.parent.setVisible(True)
|
||||||
self.parent.sideDockTabWidget.setCurrentIndex(0)
|
self.parent.sideDockTabWidget.setCurrentIndex(0)
|
||||||
self.add_bookmark_to_model(
|
self.add_bookmark_to_model(
|
||||||
description, chapter, cursor_position, identifier, True)
|
self.bookmark_default, chapter, cursor_position, identifier, True)
|
||||||
|
|
||||||
def add_bookmark_to_model(
|
def add_bookmark_to_model(
|
||||||
self, description, chapter_number, cursor_position,
|
self, description, chapter_number, cursor_position,
|
||||||
@@ -276,13 +277,15 @@ class Bookmarks:
|
|||||||
if action == deleteAction:
|
if action == deleteAction:
|
||||||
child_index = self.parent.bookmarkProxyModel.mapToSource(index)
|
child_index = self.parent.bookmarkProxyModel.mapToSource(index)
|
||||||
parent_index = child_index.parent()
|
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(
|
delete_uuid = self.parent.bookmarkModel.data(
|
||||||
child_index, QtCore.Qt.UserRole + 2)
|
child_index, QtCore.Qt.UserRole + 2)
|
||||||
|
|
||||||
self.parentTab.metadata['bookmarks'].pop(delete_uuid)
|
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:
|
if child_rows == 1:
|
||||||
self.parent.bookmarkModel.removeRow(parent_index.row())
|
self.parent.bookmarkModel.removeRow(parent_index.row())
|
||||||
|
|
||||||
@@ -292,6 +295,7 @@ class Annotations:
|
|||||||
self.parent = parent
|
self.parent = parent
|
||||||
self.parentTab = self.parent.parent
|
self.parentTab = self.parent.parent
|
||||||
self.annotationListView = QtWidgets.QListView(self.parent)
|
self.annotationListView = QtWidgets.QListView(self.parent)
|
||||||
|
|
||||||
self._translate = QtCore.QCoreApplication.translate
|
self._translate = QtCore.QCoreApplication.translate
|
||||||
self.annotations_string = self._translate('SideDock', 'Annotations')
|
self.annotations_string = self._translate('SideDock', 'Annotations')
|
||||||
|
|
||||||
@@ -339,6 +343,12 @@ class Search:
|
|||||||
self.matchWholeWordButton = QtWidgets.QToolButton(self.parent)
|
self.matchWholeWordButton = QtWidgets.QToolButton(self.parent)
|
||||||
self.searchResultsTreeView = QtWidgets.QTreeView(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()
|
self.create_widgets()
|
||||||
|
|
||||||
def create_widgets(self):
|
def create_widgets(self):
|
||||||
@@ -361,32 +371,25 @@ class Search:
|
|||||||
|
|
||||||
self.searchLineEdit.setFocusPolicy(QtCore.Qt.StrongFocus)
|
self.searchLineEdit.setFocusPolicy(QtCore.Qt.StrongFocus)
|
||||||
self.searchLineEdit.setClearButtonEnabled(True)
|
self.searchLineEdit.setClearButtonEnabled(True)
|
||||||
self._translate = QtCore.QCoreApplication.translate
|
|
||||||
self.search_string = self._translate('SideDock', 'Search')
|
|
||||||
self.searchLineEdit.setPlaceholderText(self.search_string)
|
self.searchLineEdit.setPlaceholderText(self.search_string)
|
||||||
|
|
||||||
search_book_string = self._translate('SideDock', 'Search entire book')
|
|
||||||
|
|
||||||
self.searchBookButton.setIcon(
|
self.searchBookButton.setIcon(
|
||||||
self.parent.main_window.QImageFactory.get_image('view-readermode'))
|
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.setCheckable(True)
|
||||||
self.searchBookButton.setAutoRaise(True)
|
self.searchBookButton.setAutoRaise(True)
|
||||||
self.searchBookButton.setIconSize(QtCore.QSize(20, 20))
|
self.searchBookButton.setIconSize(QtCore.QSize(20, 20))
|
||||||
|
|
||||||
case_sensitive_string = self._translate('SideDock', 'Match case')
|
|
||||||
|
|
||||||
self.caseSensitiveSearchButton.setIcon(
|
self.caseSensitiveSearchButton.setIcon(
|
||||||
self.parent.main_window.QImageFactory.get_image('search-case'))
|
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.setCheckable(True)
|
||||||
self.caseSensitiveSearchButton.setAutoRaise(True)
|
self.caseSensitiveSearchButton.setAutoRaise(True)
|
||||||
self.caseSensitiveSearchButton.setIconSize(QtCore.QSize(20, 20))
|
self.caseSensitiveSearchButton.setIconSize(QtCore.QSize(20, 20))
|
||||||
|
|
||||||
match_word_string = self._translate('SideDock', 'Match word')
|
|
||||||
self.matchWholeWordButton.setIcon(
|
self.matchWholeWordButton.setIcon(
|
||||||
self.parent.main_window.QImageFactory.get_image('search-word'))
|
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.setCheckable(True)
|
||||||
self.matchWholeWordButton.setAutoRaise(True)
|
self.matchWholeWordButton.setAutoRaise(True)
|
||||||
self.matchWholeWordButton.setIconSize(QtCore.QSize(20, 20))
|
self.matchWholeWordButton.setIconSize(QtCore.QSize(20, 20))
|
||||||
|
@@ -86,9 +86,15 @@ class ParseMOBI:
|
|||||||
|
|
||||||
self.book_ref.parse_chapters(
|
self.book_ref.parse_chapters(
|
||||||
temp_dir=self.temp_dir, split_large_xml=self.split_large_xml)
|
temp_dir=self.temp_dir, split_large_xml=self.split_large_xml)
|
||||||
file_settings = {
|
|
||||||
'images_only': False}
|
toc = []
|
||||||
return self.book['book_list'], file_settings
|
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:
|
class HidePrinting:
|
||||||
def __enter__(self):
|
def __enter__(self):
|
||||||
|
Reference in New Issue
Block a user