diff --git a/lector/resources/raw/settings.ui b/lector/resources/raw/settings.ui index d4b85d8..34fff6e 100644 --- a/lector/resources/raw/settings.ui +++ b/lector/resources/raw/settings.ui @@ -215,13 +215,6 @@ Reopen book to see changes - - - - Show TOC with Bookmarks - - - diff --git a/lector/resources/settingswindow.py b/lector/resources/settingswindow.py index 151a2bb..3a27b3c 100644 --- a/lector/resources/settingswindow.py +++ b/lector/resources/settingswindow.py @@ -125,9 +125,6 @@ class Ui_Dialog(object): 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.horizontalLayout_15 = QtWidgets.QHBoxLayout() self.horizontalLayout_15.setObjectName("horizontalLayout_15") self.smallIncrementLabel = QtWidgets.QLabel(self.groupBox_2) @@ -351,7 +348,6 @@ class Ui_Dialog(object): 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.setText(_translate("Dialog", "Cache comic / pdf pages")) - self.tocWithBookmarks.setText(_translate("Dialog", "Show TOC with Bookmarks")) self.smallIncrementLabel.setToolTip(_translate("Dialog", "

UP/DOWN ARROW - Steps to take before turning comicbook page

")) self.smallIncrementLabel.setText(_translate("Dialog", "Small increment")) self.smallIncrementBox.setToolTip(_translate("Dialog", "

UP/DOWN ARROW - Steps to take before turning comicbook page

")) diff --git a/lector/settings.py b/lector/settings.py index d5444a4..c415204 100644 --- a/lector/settings.py +++ b/lector/settings.py @@ -122,8 +122,6 @@ class Settings: 'cachingEnabled', 'True').capitalize()) self.parent.settings['hide_scrollbars'] = literal_eval(self.settings.value( '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['consider_read_at'] = int(self.settings.value('considerReadAt', 95)) self.parent.settings['small_increment'] = int(self.settings.value('smallIncrement', 4)) @@ -213,7 +211,6 @@ class Settings: self.settings.setValue('cachingEnabled', str(current_settings['caching_enabled'])) self.settings.setValue('hideScrollBars', str(current_settings['hide_scrollbars'])) 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('considerReadAt', current_settings['consider_read_at']) self.settings.setValue('mangaMode', str(current_settings['manga_mode'])) diff --git a/lector/settingsdialog.py b/lector/settingsdialog.py index b04fbd9..cfd1110 100644 --- a/lector/settingsdialog.py +++ b/lector/settingsdialog.py @@ -99,7 +99,6 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog): self.cachingEnabled.setChecked(self.main_window.settings['caching_enabled']) self.hideScrollBars.setChecked(self.main_window.settings['hide_scrollbars']) 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.readAtPercent.setValue(self.main_window.settings['consider_read_at']) self.smallIncrementBox.setValue(self.main_window.settings['small_increment']) @@ -113,7 +112,6 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog): self.cachingEnabled.clicked.connect(self.manage_checkboxes) self.hideScrollBars.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.readAtPercent.valueChanged.connect(self.change_read_at) self.smallIncrementBox.valueChanged.connect(self.change_increment) @@ -392,8 +390,7 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog): 'performCulling': 'perform_culling', 'cachingEnabled': 'caching_enabled', 'hideScrollBars': 'hide_scrollbars', - 'attenuateTitles': 'attenuate_titles', - 'tocWithBookmarks': 'toc_with_bookmarks'} + 'attenuateTitles': 'attenuate_titles'} self.main_window.settings[ sender_dict[sender]] = not self.main_window.settings[sender_dict[sender]] diff --git a/lector/widgets.py b/lector/widgets.py index 795f3ec..9a20685 100644 --- a/lector/widgets.py +++ b/lector/widgets.py @@ -481,25 +481,11 @@ class Tab(QtWidgets.QWidget): if not current_position: current_position = self.metadata['position']['current_chapter'] - # Just look at the variable names. They're practically sentences. - positions_available_in_toc = [i[2] for i in self.metadata['toc']] - try: - position_reference_index = positions_available_in_toc.index( - current_position) - position_reference = positions_available_in_toc[ - position_reference_index] - - except ValueError: # No specific corresponding value was found - # Going for nearest preceding neighbor - for count, i in enumerate(positions_available_in_toc): - try: - if (positions_available_in_toc[count] < - current_position < - positions_available_in_toc[count + 1]): - position_reference = i - break - except IndexError: # Set to the last chapter - position_reference = positions_available_in_toc[-1] + position_reference = 1 + for i in reversed(self.metadata['toc']): + if i[2] <= current_position: + position_reference = i[2] + break # Match the position reference to the corresponding # index in the QTreeView / QCombobox @@ -512,6 +498,7 @@ class Tab(QtWidgets.QWidget): except IndexError: return + # A tocBox name is specified for the context menu if not tocBox: tocBox = self.main_window.bookToolBar.tocBox @@ -636,27 +623,28 @@ class Tab(QtWidgets.QWidget): self.bookmarkTreeView.edit(edit_index) def get_chapter_name(chapter_number): - try: - chapter_name = [i[1] for i in self.metadata['toc'] if i[2] == chapter_number][0] - except IndexError: - for i in reversed(self.metadata['toc']): - if i[2] < chapter_number: - chapter_name = i[1] - break - return chapter_name + for i in reversed(self.metadata['toc']): + if i[2] <= chapter_number: + return i[1] + return 'Unknown' bookmark = QtGui.QStandardItem() - bookmark.setData(False, QtCore.Qt.UserRole + 10) # Is Parent bookmark.setData(chapter_number, QtCore.Qt.UserRole) # Chapter number bookmark.setData(cursor_position, QtCore.Qt.UserRole + 1) # Cursor Position bookmark.setData(identifier, QtCore.Qt.UserRole + 2) # Identifier bookmark.setData(description, QtCore.Qt.DisplayRole) # Description + bookmark_chapter_name = get_chapter_name(chapter_number) for i in range(self.bookmarkModel.rowCount()): parentIndex = self.bookmarkModel.index(i, 0) - parent_chapter = parentIndex.data(QtCore.Qt.UserRole) - if parent_chapter == chapter_number: + parent_chapter_number = parentIndex.data(QtCore.Qt.UserRole) + parent_chapter_name = parentIndex.data(QtCore.Qt.DisplayRole) + + # This prevents duplication of the bookmark in the new + # navigation model + if ((parent_chapter_number <= chapter_number) and + (parent_chapter_name == bookmark_chapter_name)): bookmarkParent = self.bookmarkModel.itemFromIndex(parentIndex) bookmarkParent.appendRow(bookmark) if new_bookmark: @@ -693,18 +681,6 @@ class Tab(QtWidgets.QWidget): self.set_cursor_position(cursor_position) def generate_bookmark_model(self): - self.bookmarkModel = QtGui.QStandardItemModel(self) - - if self.main_window.settings['toc_with_bookmarks']: - pass - # 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(): description = i[1]['description'] chapter = i[1]['chapter']