Add option to include TOC with bookmarks
Shift dock positions
This commit is contained in:
@@ -213,6 +213,17 @@ Reopen book to see changes</string>
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_12">
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="tocWithBookmarks">
|
||||||
|
<property name="text">
|
||||||
|
<string>Show TOC with Bookmarks</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
||||||
<item>
|
<item>
|
||||||
|
@@ -123,6 +123,12 @@ class Ui_Dialog(object):
|
|||||||
self.cachingEnabled.setObjectName("cachingEnabled")
|
self.cachingEnabled.setObjectName("cachingEnabled")
|
||||||
self.horizontalLayout_6.addWidget(self.cachingEnabled)
|
self.horizontalLayout_6.addWidget(self.cachingEnabled)
|
||||||
self.verticalLayout_3.addLayout(self.horizontalLayout_6)
|
self.verticalLayout_3.addLayout(self.horizontalLayout_6)
|
||||||
|
self.horizontalLayout_12 = QtWidgets.QHBoxLayout()
|
||||||
|
self.horizontalLayout_12.setObjectName("horizontalLayout_12")
|
||||||
|
self.tocWithBookmarks = QtWidgets.QCheckBox(self.groupBox_2)
|
||||||
|
self.tocWithBookmarks.setObjectName("tocWithBookmarks")
|
||||||
|
self.horizontalLayout_12.addWidget(self.tocWithBookmarks)
|
||||||
|
self.verticalLayout_3.addLayout(self.horizontalLayout_12)
|
||||||
self.horizontalLayout_8 = QtWidgets.QHBoxLayout()
|
self.horizontalLayout_8 = QtWidgets.QHBoxLayout()
|
||||||
self.horizontalLayout_8.setObjectName("horizontalLayout_8")
|
self.horizontalLayout_8.setObjectName("horizontalLayout_8")
|
||||||
self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
|
self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
|
||||||
@@ -324,6 +330,7 @@ class Ui_Dialog(object):
|
|||||||
self.hideScrollBars.setText(_translate("Dialog", "Hide scrollbars when reading"))
|
self.hideScrollBars.setText(_translate("Dialog", "Hide scrollbars when reading"))
|
||||||
self.cachingEnabled.setToolTip(_translate("Dialog", "Greatly reduces page transition time at the cost of more memory"))
|
self.cachingEnabled.setToolTip(_translate("Dialog", "Greatly reduces page transition time at the cost of more memory"))
|
||||||
self.cachingEnabled.setText(_translate("Dialog", "Cache comic / pdf pages"))
|
self.cachingEnabled.setText(_translate("Dialog", "Cache comic / pdf pages"))
|
||||||
|
self.tocWithBookmarks.setText(_translate("Dialog", "Show TOC with Bookmarks"))
|
||||||
self.languageLabel.setText(_translate("Dialog", "Dictionary language"))
|
self.languageLabel.setText(_translate("Dialog", "Dictionary language"))
|
||||||
self.scrollSpeedLabel.setText(_translate("Dialog", "Scroll speed"))
|
self.scrollSpeedLabel.setText(_translate("Dialog", "Scroll speed"))
|
||||||
self.newAnnotation.setToolTip(_translate("Dialog", "New"))
|
self.newAnnotation.setToolTip(_translate("Dialog", "New"))
|
||||||
|
@@ -119,6 +119,8 @@ class Settings:
|
|||||||
'cachingEnabled', 'True').capitalize())
|
'cachingEnabled', 'True').capitalize())
|
||||||
self.parent.settings['hide_scrollbars'] = literal_eval(self.settings.value(
|
self.parent.settings['hide_scrollbars'] = literal_eval(self.settings.value(
|
||||||
'hideScrollBars', 'False').capitalize())
|
'hideScrollBars', 'False').capitalize())
|
||||||
|
self.parent.settings['toc_with_bookmarks'] = literal_eval(self.settings.value(
|
||||||
|
'tocWithBookmarks', 'False').capitalize())
|
||||||
self.parent.settings['scroll_speed'] = int(self.settings.value('scrollSpeed', 7))
|
self.parent.settings['scroll_speed'] = int(self.settings.value('scrollSpeed', 7))
|
||||||
self.parent.settings['consider_read_at'] = int(self.settings.value('considerReadAt', 95))
|
self.parent.settings['consider_read_at'] = int(self.settings.value('considerReadAt', 95))
|
||||||
self.parent.settings['attenuate_titles'] = literal_eval(self.settings.value(
|
self.parent.settings['attenuate_titles'] = literal_eval(self.settings.value(
|
||||||
@@ -201,6 +203,7 @@ class Settings:
|
|||||||
self.settings.setValue('cachingEnabled', str(current_settings['caching_enabled']))
|
self.settings.setValue('cachingEnabled', str(current_settings['caching_enabled']))
|
||||||
self.settings.setValue('hideScrollBars', str(current_settings['hide_scrollbars']))
|
self.settings.setValue('hideScrollBars', str(current_settings['hide_scrollbars']))
|
||||||
self.settings.setValue('attenuateTitles', str(current_settings['attenuate_titles']))
|
self.settings.setValue('attenuateTitles', str(current_settings['attenuate_titles']))
|
||||||
|
self.settings.setValue('tocWithBookmarks', str(current_settings['toc_with_bookmarks']))
|
||||||
self.settings.setValue('scrollSpeed', current_settings['scroll_speed'])
|
self.settings.setValue('scrollSpeed', current_settings['scroll_speed'])
|
||||||
self.settings.setValue('considerReadAt', current_settings['consider_read_at'])
|
self.settings.setValue('considerReadAt', current_settings['consider_read_at'])
|
||||||
self.settings.endGroup()
|
self.settings.endGroup()
|
||||||
|
@@ -96,6 +96,7 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog):
|
|||||||
self.cachingEnabled.setChecked(self.main_window.settings['caching_enabled'])
|
self.cachingEnabled.setChecked(self.main_window.settings['caching_enabled'])
|
||||||
self.hideScrollBars.setChecked(self.main_window.settings['hide_scrollbars'])
|
self.hideScrollBars.setChecked(self.main_window.settings['hide_scrollbars'])
|
||||||
self.attenuateTitles.setChecked(self.main_window.settings['attenuate_titles'])
|
self.attenuateTitles.setChecked(self.main_window.settings['attenuate_titles'])
|
||||||
|
self.tocWithBookmarks.setChecked(self.main_window.settings['toc_with_bookmarks'])
|
||||||
self.scrollSpeedSlider.setValue(self.main_window.settings['scroll_speed'])
|
self.scrollSpeedSlider.setValue(self.main_window.settings['scroll_speed'])
|
||||||
self.readAtPercent.setValue(self.main_window.settings['consider_read_at'])
|
self.readAtPercent.setValue(self.main_window.settings['consider_read_at'])
|
||||||
|
|
||||||
@@ -107,6 +108,7 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog):
|
|||||||
self.cachingEnabled.clicked.connect(self.manage_checkboxes)
|
self.cachingEnabled.clicked.connect(self.manage_checkboxes)
|
||||||
self.hideScrollBars.clicked.connect(self.manage_checkboxes)
|
self.hideScrollBars.clicked.connect(self.manage_checkboxes)
|
||||||
self.attenuateTitles.clicked.connect(self.manage_checkboxes)
|
self.attenuateTitles.clicked.connect(self.manage_checkboxes)
|
||||||
|
self.tocWithBookmarks.clicked.connect(self.manage_checkboxes)
|
||||||
self.scrollSpeedSlider.valueChanged.connect(self.change_scroll_speed)
|
self.scrollSpeedSlider.valueChanged.connect(self.change_scroll_speed)
|
||||||
self.readAtPercent.valueChanged.connect(self.change_read_at)
|
self.readAtPercent.valueChanged.connect(self.change_read_at)
|
||||||
|
|
||||||
@@ -374,7 +376,8 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog):
|
|||||||
'performCulling': 'perform_culling',
|
'performCulling': 'perform_culling',
|
||||||
'cachingEnabled': 'caching_enabled',
|
'cachingEnabled': 'caching_enabled',
|
||||||
'hideScrollBars': 'hide_scrollbars',
|
'hideScrollBars': 'hide_scrollbars',
|
||||||
'attenuateTitles': 'attenuate_titles'}
|
'attenuateTitles': 'attenuate_titles',
|
||||||
|
'tocWithBookmarks': 'toc_with_bookmarks'}
|
||||||
|
|
||||||
self.main_window.settings[
|
self.main_window.settings[
|
||||||
sender_dict[sender]] = not self.main_window.settings[sender_dict[sender]]
|
sender_dict[sender]] = not self.main_window.settings[sender_dict[sender]]
|
||||||
|
@@ -150,7 +150,12 @@ class Tab(QtWidgets.QWidget):
|
|||||||
|
|
||||||
# Create the dock widget for context specific display
|
# Create the dock widget for context specific display
|
||||||
self.bookmarkDock = PliantDockWidget(self.main_window, 'bookmarks', self.contentView)
|
self.bookmarkDock = PliantDockWidget(self.main_window, 'bookmarks', self.contentView)
|
||||||
self.bookmarkDock.setWindowTitle(self._translate('Tab', 'Bookmarks'))
|
|
||||||
|
title_string = self._translate('Tab', 'Bookmarks')
|
||||||
|
if self.main_window.settings['toc_with_bookmarks']:
|
||||||
|
title_string = self._translate('Tab', 'TOC + Bookmarks')
|
||||||
|
self.bookmarkDock.setWindowTitle(title_string)
|
||||||
|
|
||||||
self.bookmarkDock.setFeatures(QtWidgets.QDockWidget.DockWidgetClosable)
|
self.bookmarkDock.setFeatures(QtWidgets.QDockWidget.DockWidgetClosable)
|
||||||
self.bookmarkDock.hide()
|
self.bookmarkDock.hide()
|
||||||
|
|
||||||
@@ -506,10 +511,10 @@ class Tab(QtWidgets.QWidget):
|
|||||||
# In case no parent item exists
|
# In case no parent item exists
|
||||||
bookmarkParent = QtGui.QStandardItem()
|
bookmarkParent = QtGui.QStandardItem()
|
||||||
bookmarkParent.setData(True, QtCore.Qt.UserRole + 10) # Is Parent
|
bookmarkParent.setData(True, QtCore.Qt.UserRole + 10) # Is Parent
|
||||||
bookmarkParent.setFlags(bookmarkParent.flags() & ~QtCore.Qt.ItemIsEditable)
|
bookmarkParent.setFlags(bookmarkParent.flags() & ~QtCore.Qt.ItemIsEditable) # Is Editable
|
||||||
chapter_name = self.metadata['content'][chapter - 1][0]
|
chapter_name = self.metadata['content'][chapter - 1][0] # Chapter Name
|
||||||
bookmarkParent.setData(chapter_name, QtCore.Qt.DisplayRole)
|
bookmarkParent.setData(chapter_name, QtCore.Qt.DisplayRole)
|
||||||
bookmarkParent.setData(chapter, QtCore.Qt.UserRole)
|
bookmarkParent.setData(chapter, QtCore.Qt.UserRole) # Chapter Number
|
||||||
|
|
||||||
bookmarkParent.appendRow(bookmark)
|
bookmarkParent.appendRow(bookmark)
|
||||||
self.bookmarkModel.appendRow(bookmarkParent)
|
self.bookmarkModel.appendRow(bookmarkParent)
|
||||||
@@ -521,9 +526,10 @@ class Tab(QtWidgets.QWidget):
|
|||||||
if not index.isValid():
|
if not index.isValid():
|
||||||
return
|
return
|
||||||
|
|
||||||
is_parent = self.bookmarkProxyModel.data(
|
is_parent = self.bookmarkProxyModel.data(index, QtCore.Qt.UserRole + 10)
|
||||||
index, QtCore.Qt.UserRole + 10)
|
|
||||||
if is_parent:
|
if is_parent:
|
||||||
|
chapter_number = self.bookmarkProxyModel.data(index, QtCore.Qt.UserRole)
|
||||||
|
self.main_window.bookToolBar.tocBox.setCurrentIndex(chapter_number - 1)
|
||||||
return
|
return
|
||||||
|
|
||||||
chapter = self.bookmarkProxyModel.data(index, QtCore.Qt.UserRole)
|
chapter = self.bookmarkProxyModel.data(index, QtCore.Qt.UserRole)
|
||||||
@@ -535,6 +541,16 @@ class Tab(QtWidgets.QWidget):
|
|||||||
|
|
||||||
def generate_bookmark_model(self):
|
def generate_bookmark_model(self):
|
||||||
self.bookmarkModel = QtGui.QStandardItemModel(self)
|
self.bookmarkModel = QtGui.QStandardItemModel(self)
|
||||||
|
|
||||||
|
if self.main_window.settings['toc_with_bookmarks']:
|
||||||
|
for chapter_number, i in enumerate(self.metadata['content']):
|
||||||
|
chapterItem = QtGui.QStandardItem()
|
||||||
|
chapterItem.setData(i[0], QtCore.Qt.DisplayRole) # Display name
|
||||||
|
chapterItem.setData(chapter_number + 1, QtCore.Qt.UserRole) # Chapter Number
|
||||||
|
chapterItem.setData(True, QtCore.Qt.UserRole + 10) # Is Parent
|
||||||
|
chapterItem.setFlags(chapterItem.flags() & ~QtCore.Qt.ItemIsEditable) # Is Editable
|
||||||
|
self.bookmarkModel.appendRow(chapterItem)
|
||||||
|
|
||||||
for i in self.metadata['bookmarks'].items():
|
for i in self.metadata['bookmarks'].items():
|
||||||
description = i[1]['description']
|
description = i[1]['description']
|
||||||
chapter = i[1]['chapter']
|
chapter = i[1]['chapter']
|
||||||
@@ -568,8 +584,7 @@ class Tab(QtWidgets.QWidget):
|
|||||||
if not index.isValid():
|
if not index.isValid():
|
||||||
return
|
return
|
||||||
|
|
||||||
is_parent = self.bookmarkProxyModel.data(
|
is_parent = self.bookmarkProxyModel.data(index, QtCore.Qt.UserRole + 10)
|
||||||
index, QtCore.Qt.UserRole + 10)
|
|
||||||
if is_parent:
|
if is_parent:
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -615,6 +630,7 @@ class Tab(QtWidgets.QWidget):
|
|||||||
self.contentView.hide()
|
self.contentView.hide()
|
||||||
self.main_window.closeEvent()
|
self.main_window.closeEvent()
|
||||||
|
|
||||||
|
|
||||||
class PliantDockWidget(QtWidgets.QDockWidget):
|
class PliantDockWidget(QtWidgets.QDockWidget):
|
||||||
def __init__(self, main_window, intended_for, contentView, parent=None):
|
def __init__(self, main_window, intended_for, contentView, parent=None):
|
||||||
super(PliantDockWidget, self).__init__()
|
super(PliantDockWidget, self).__init__()
|
||||||
@@ -631,17 +647,17 @@ class PliantDockWidget(QtWidgets.QDockWidget):
|
|||||||
self.contentView.viewport().rect().topLeft())
|
self.contentView.viewport().rect().topLeft())
|
||||||
|
|
||||||
desktop_size = QtWidgets.QDesktopWidget().screenGeometry()
|
desktop_size = QtWidgets.QDesktopWidget().screenGeometry()
|
||||||
dock_y = viewport_topRight.y() + (viewport_height * .10)
|
dock_y = viewport_topRight.y() # + (viewport_height * .10)
|
||||||
dock_height = viewport_height * .80
|
dock_height = viewport_height * .999
|
||||||
|
|
||||||
if self.intended_for == 'bookmarks':
|
if self.intended_for == 'bookmarks':
|
||||||
dock_width = desktop_size.width() // 5.5
|
dock_width = desktop_size.width() // 5.5
|
||||||
dock_x = viewport_topRight.x() - dock_width + 1
|
dock_x = viewport_topLeft.x()
|
||||||
self.main_window.bookToolBar.bookmarkButton.setChecked(True)
|
self.main_window.bookToolBar.bookmarkButton.setChecked(True)
|
||||||
|
|
||||||
elif self.intended_for == 'annotations':
|
elif self.intended_for == 'annotations':
|
||||||
dock_width = desktop_size.width() // 5.5
|
dock_width = desktop_size.width() // 5.5
|
||||||
dock_x = viewport_topLeft.x()
|
dock_x = viewport_topRight.x() - dock_width + 1
|
||||||
self.main_window.bookToolBar.annotationButton.setChecked(True)
|
self.main_window.bookToolBar.annotationButton.setChecked(True)
|
||||||
|
|
||||||
elif self.intended_for == 'notes':
|
elif self.intended_for == 'notes':
|
||||||
|
Reference in New Issue
Block a user