From ffaace2eaa5c33a5516ab86ea251d7ce3660ab04 Mon Sep 17 00:00:00 2001 From: BasioMeusPuga Date: Sun, 13 May 2018 15:54:17 -0400 Subject: [PATCH] Uniform tab sizes Path search PDF parser exception handling --- lector/__main__.py | 6 ++---- lector/library.py | 1 + lector/models.py | 5 ++++- lector/parsers/pdf.py | 9 ++++++--- lector/resources/raw/settings.ui | 7 +++++++ lector/resources/settingswindow.py | 4 ++++ lector/settings.py | 3 +++ lector/settingsdialog.py | 10 +++++++++- lector/widgets.py | 2 ++ 9 files changed, 38 insertions(+), 9 deletions(-) diff --git a/lector/__main__.py b/lector/__main__.py index ec90b01..ad564b7 100755 --- a/lector/__main__.py +++ b/lector/__main__.py @@ -167,7 +167,7 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): self.bookToolBar.annotationButton.triggered.connect(self.toggle_dock_widgets) self.bookToolBar.addBookmarkButton.triggered.connect(self.add_bookmark) self.bookToolBar.bookmarkButton.triggered.connect(self.toggle_dock_widgets) - self.bookToolBar.distractionFreeButton.triggered.connect(self.toggle_dock_widgets) + self.bookToolBar.distractionFreeButton.triggered.connect(self.toggle_distraction_free) self.bookToolBar.fullscreenButton.triggered.connect(self.set_fullscreen) for count, i in enumerate(self.display_profiles): @@ -239,6 +239,7 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): self.listView.customContextMenuRequested.connect(self.generate_library_context_menu) self.listView.verticalScrollBar().valueChanged.connect(self.start_culling_timer) self.listView.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded) + self.listView.setAcceptDrops(True) self.listView.setStyleSheet( "QListView {{background-color: {0}}}".format( @@ -699,9 +700,6 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): self.tabWidget.setCurrentIndex(self.tabWidget.count() - 1) finishing_touches() - # TODO - # def dropEvent - def statusbar_visibility(self): if self.sender() == self.libraryToolBar.searchBar: if self.libraryToolBar.searchBar.text() == '': diff --git a/lector/library.py b/lector/library.py index 48e0571..4c0829e 100644 --- a/lector/library.py +++ b/lector/library.py @@ -160,6 +160,7 @@ class Library: item.setData(False, QtCore.Qt.UserRole + 8) # Is the cover being displayed? item.setData(date_added, QtCore.Qt.UserRole + 9) item.setData(last_accessed, QtCore.Qt.UserRole + 12) + item.setData(path, QtCore.Qt.UserRole + 13) item.setIcon(QtGui.QIcon(img_pixmap)) self.libraryModel.appendRow(item) diff --git a/lector/models.py b/lector/models.py index e0b877c..a15d676 100644 --- a/lector/models.py +++ b/lector/models.py @@ -202,6 +202,7 @@ class ProxyModelsCommonFunctions: directory_name = model.data(this_index, QtCore.Qt.UserRole + 10) directory_tags = model.data(this_index, QtCore.Qt.UserRole + 11) last_accessed = model.data(this_index, QtCore.Qt.UserRole + 12) + file_path = model.data(this_index, QtCore.Qt.UserRole + 13) # Hide untouched files when sorting by last accessed if self.parent_model.sorting_box_position == 4 and not last_accessed: @@ -222,7 +223,9 @@ class ProxyModelsCommonFunctions: else: valid_data = [ i.lower() for i in ( - title, author, tags, directory_name, directory_tags) if i is not None] + title, author, tags, directory_name, + directory_tags, file_path) + if i is not None] for i in valid_data: if self.parent_model.filter_text.lower() in i: return True diff --git a/lector/parsers/pdf.py b/lector/parsers/pdf.py index 7fc70a1..4ecbe21 100644 --- a/lector/parsers/pdf.py +++ b/lector/parsers/pdf.py @@ -64,9 +64,12 @@ class ParsePDF: popplerqt5.Poppler.Document.Antialiasing and popplerqt5.Poppler.Document.TextAntialiasing) - cover_page = self.book.page(0) - cover_image = cover_page.renderToImage(300, 300) - return resize_image(cover_image) + try: + cover_page = self.book.page(0) + cover_image = cover_page.renderToImage(300, 300) + return resize_image(cover_image) + except AttributeError: + return None def get_isbn(self): return None diff --git a/lector/resources/raw/settings.ui b/lector/resources/raw/settings.ui index ad76cab..002105a 100644 --- a/lector/resources/raw/settings.ui +++ b/lector/resources/raw/settings.ui @@ -166,6 +166,13 @@ + + + + Shrink long book titles + + + diff --git a/lector/resources/settingswindow.py b/lector/resources/settingswindow.py index dfb2cbf..598a161 100644 --- a/lector/resources/settingswindow.py +++ b/lector/resources/settingswindow.py @@ -102,6 +102,9 @@ class Ui_Dialog(object): self.autoTags = QtWidgets.QCheckBox(self.groupBox) self.autoTags.setObjectName("autoTags") self.horizontalLayout_9.addWidget(self.autoTags) + self.attenuateTitles = QtWidgets.QCheckBox(self.groupBox) + self.attenuateTitles.setObjectName("attenuateTitles") + self.horizontalLayout_9.addWidget(self.attenuateTitles) self.verticalLayout_2.addLayout(self.horizontalLayout_9) self.gridLayout_4.addLayout(self.verticalLayout_2, 0, 0, 1, 1) self.verticalLayout.addWidget(self.groupBox) @@ -314,6 +317,7 @@ class Ui_Dialog(object): self.performCulling.setToolTip(_translate("Dialog", "Enabling reduces startup time and memory usage")) self.performCulling.setText(_translate("Dialog", "Load covers only when needed")) self.autoTags.setText(_translate("Dialog", "Generate tags from files")) + self.attenuateTitles.setText(_translate("Dialog", "Shrink long book titles")) self.groupBox_2.setTitle(_translate("Dialog", "Reading")) self.hideScrollBars.setToolTip(_translate("Dialog", "Horizontal scrolling with Alt + Scroll\n" "Reopen book to see changes")) diff --git a/lector/settings.py b/lector/settings.py index 206383b..4e6d7fa 100644 --- a/lector/settings.py +++ b/lector/settings.py @@ -121,6 +121,8 @@ class Settings: 'hideScrollBars', '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['attenuate_titles'] = literal_eval(self.settings.value( + 'attenuateTitles', 'False').capitalize()) self.settings.endGroup() self.settings.beginGroup('dialogSettings') @@ -198,6 +200,7 @@ class Settings: self.settings.setValue('dictionaryLanguage', str(current_settings['dictionary_language'])) 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('scrollSpeed', current_settings['scroll_speed']) self.settings.setValue('considerReadAt', current_settings['consider_read_at']) self.settings.endGroup() diff --git a/lector/settingsdialog.py b/lector/settingsdialog.py index 0c36b97..08a4107 100644 --- a/lector/settingsdialog.py +++ b/lector/settingsdialog.py @@ -95,6 +95,7 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog): self.performCulling.setChecked(self.main_window.settings['perform_culling']) 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.scrollSpeedSlider.setValue(self.main_window.settings['scroll_speed']) self.readAtPercent.setValue(self.main_window.settings['consider_read_at']) @@ -105,6 +106,7 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog): self.performCulling.clicked.connect(self.manage_checkboxes) self.cachingEnabled.clicked.connect(self.manage_checkboxes) self.hideScrollBars.clicked.connect(self.manage_checkboxes) + self.attenuateTitles.clicked.connect(self.manage_checkboxes) self.scrollSpeedSlider.valueChanged.connect(self.change_scroll_speed) self.readAtPercent.valueChanged.connect(self.change_read_at) @@ -164,6 +166,11 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog): # Generate the filesystem treeView self.generate_tree() + # Hide the image annotation tab + # TODO + # Maybe get off your lazy ass and write something for this + self.tabWidget.tabBar().setVisible(False) + def generate_tree(self): # Fetch all directories in the database paths = database.DatabaseFunctions( @@ -366,7 +373,8 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog): 'fileRemember': 'remember_files', 'performCulling': 'perform_culling', 'cachingEnabled': 'caching_enabled', - 'hideScrollBars': 'hide_scrollbars'} + 'hideScrollBars': 'hide_scrollbars', + '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 b1d7271..e563606 100644 --- a/lector/widgets.py +++ b/lector/widgets.py @@ -187,6 +187,8 @@ class Tab(QtWidgets.QWidget): self.bookmarkDock.setWindowOpacity(.95) title = self.metadata['title'] + if self.main_window.settings['attenuate_titles'] and len(title) > 30: + title = title[:30] + '...' self.main_window.tabWidget.addTab(self, title) this_tab_index = self.main_window.tabWidget.indexOf(self)