Profile reset, Scroll past end, HTML whitespace error fixed

This commit is contained in:
BasioMeusPuga
2017-11-15 14:50:24 +05:30
parent dc9e2720f2
commit c91d643717
3 changed files with 48 additions and 15 deletions

View File

@@ -121,6 +121,7 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
self.bookToolBar.lineSpacingDown.triggered.connect(self.modify_font) self.bookToolBar.lineSpacingDown.triggered.connect(self.modify_font)
self.bookToolBar.paddingUp.triggered.connect(self.modify_font) self.bookToolBar.paddingUp.triggered.connect(self.modify_font)
self.bookToolBar.paddingDown.triggered.connect(self.modify_font) self.bookToolBar.paddingDown.triggered.connect(self.modify_font)
self.bookToolBar.resetProfile.triggered.connect(self.reset_profile)
self.bookToolBar.colorBoxFG.clicked.connect(self.get_color) self.bookToolBar.colorBoxFG.clicked.connect(self.get_color)
self.bookToolBar.colorBoxBG.clicked.connect(self.get_color) self.bookToolBar.colorBoxBG.clicked.connect(self.get_color)
@@ -313,9 +314,9 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
self.viewModel.setData( self.viewModel.setData(
model_index, current_tab.metadata['position'], QtCore.Qt.UserRole + 7) model_index, current_tab.metadata['position'], QtCore.Qt.UserRole + 7)
current_tab.contentView.verticalScrollBar().setValue(0) # current_tab.contentView.verticalScrollBar().setValue(0)
current_tab.contentView.clear()
current_tab.contentView.setHtml(required_content) current_tab.contentView.setHtml(required_content)
current_tab.contentView.setAlignment(QtCore.Qt.AlignCenter)
def set_fullscreen(self): def set_fullscreen(self):
current_tab = self.tabWidget.currentIndex() current_tab = self.tabWidget.currentIndex()
@@ -356,7 +357,9 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
for i in contents: for i in contents:
file_data = contents[i] file_data = contents[i]
Tab(file_data, self.tabWidget) Tab(file_data, self.tabWidget) # New tabs are created here
# Initial position adjustment
# is carried out by the tab itself
if file_data['path'] == self.last_open_tab: if file_data['path'] == self.last_open_tab:
found_a_focusable_tab = True found_a_focusable_tab = True
self.tabWidget.setCurrentIndex(self.tabWidget.count() - 1) self.tabWidget.setCurrentIndex(self.tabWidget.count() - 1)
@@ -466,6 +469,13 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
"QTextEdit {{font-family: {0}; font-size: {1}px; color: {2}; background-color: {3}}}".format( "QTextEdit {{font-family: {0}; font-size: {1}px; color: {2}; background-color: {3}}}".format(
font, font_size, foreground, background)) font, font_size, foreground, background))
def reset_profile(self):
current_profile_index = self.bookToolBar.profileBox.currentIndex()
current_profile_default = Settings(self).default_profiles[current_profile_index]
self.bookToolBar.profileBox.setItemData(
current_profile_index, current_profile_default, QtCore.Qt.UserRole)
self.format_contentView()
def closeEvent(self, event=None): def closeEvent(self, event=None):
# All tabs must be iterated upon here # All tabs must be iterated upon here
self.temp_dir.remove() self.temp_dir.remove()

View File

@@ -9,7 +9,7 @@ class Settings:
self.parent_window = parent self.parent_window = parent
self.settings = QtCore.QSettings('Lector', 'Lector') self.settings = QtCore.QSettings('Lector', 'Lector')
self.default_profile1 = { default_profile1 = {
'font': 'Noto Sans', 'font': 'Noto Sans',
'foreground': '#000000', 'foreground': '#000000',
'background': '#d8d8d8', 'background': '#d8d8d8',
@@ -17,7 +17,7 @@ class Settings:
'font_size': 20, 'font_size': 20,
'line_spacing': 1.5} 'line_spacing': 1.5}
self.default_profile2 = { default_profile2 = {
'font': 'Roboto', 'font': 'Roboto',
'foreground': '#c2c2c2', 'foreground': '#c2c2c2',
'background': '#161616', 'background': '#161616',
@@ -25,7 +25,7 @@ class Settings:
'font_size': 20, 'font_size': 20,
'line_spacing': 1.5} 'line_spacing': 1.5}
self.default_profile3 = { default_profile3 = {
'font': 'Roboto', 'font': 'Roboto',
'foreground': '#657b83', 'foreground': '#657b83',
'background': '#002b36', 'background': '#002b36',
@@ -33,6 +33,9 @@ class Settings:
'font_size': 20, 'font_size': 20,
'line_spacing': 1.5} 'line_spacing': 1.5}
self.default_profiles = [
default_profile1, default_profile2, default_profile3]
def read_settings(self): def read_settings(self):
self.settings.beginGroup('mainWindow') self.settings.beginGroup('mainWindow')
self.parent_window.resize(self.settings.value( self.parent_window.resize(self.settings.value(
@@ -50,10 +53,7 @@ class Settings:
'databasePath', 'databasePath',
QtCore.QStandardPaths.writableLocation(QtCore.QStandardPaths.AppDataLocation)) QtCore.QStandardPaths.writableLocation(QtCore.QStandardPaths.AppDataLocation))
self.parent_window.display_profiles = self.settings.value( self.parent_window.display_profiles = self.settings.value(
'displayProfiles', [ 'displayProfiles', self.default_profiles)
self.default_profile1,
self.default_profile2,
self.default_profile3])
self.parent_window.current_profile_index = int(self.settings.value( self.parent_window.current_profile_index = int(self.settings.value(
'currentProfileIndex', 0)) 'currentProfileIndex', 0))
self.settings.endGroup() self.settings.endGroup()

View File

@@ -8,7 +8,6 @@ import database
import pie_chart import pie_chart
import resources import resources
class BookToolBar(QtWidgets.QToolBar): class BookToolBar(QtWidgets.QToolBar):
def __init__(self, parent=None): def __init__(self, parent=None):
super(BookToolBar, self).__init__(parent) super(BookToolBar, self).__init__(parent)
@@ -33,6 +32,8 @@ class BookToolBar(QtWidgets.QToolBar):
QtGui.QIcon.fromTheme('gtk-select-font'), 'Font settings', self) QtGui.QIcon.fromTheme('gtk-select-font'), 'Font settings', self)
self.settingsButton = QtWidgets.QAction( self.settingsButton = QtWidgets.QAction(
QtGui.QIcon.fromTheme('settings'), 'Settings', self) QtGui.QIcon.fromTheme('settings'), 'Settings', self)
self.resetProfile = QtWidgets.QAction(
QtGui.QIcon.fromTheme('view-refresh'), 'Reset profile', self)
# Add buttons # Add buttons
self.addAction(self.fontButton) self.addAction(self.fontButton)
@@ -131,6 +132,8 @@ class BookToolBar(QtWidgets.QToolBar):
self.tocBoxAction = self.addWidget(self.tocBox) self.tocBoxAction = self.addWidget(self.tocBox)
self.searchBarAction = self.addWidget(self.searchBar) self.searchBarAction = self.addWidget(self.searchBar)
self.addAction(self.resetProfile)
self.resetProfile.setVisible(False)
def toggle_font_settings(self): def toggle_font_settings(self):
if self.fontButton.isChecked(): if self.fontButton.isChecked():
@@ -159,6 +162,7 @@ class BookToolBar(QtWidgets.QToolBar):
self.tocBoxAction.setVisible(False) self.tocBoxAction.setVisible(False)
self.searchBarAction.setVisible(False) self.searchBarAction.setVisible(False)
self.resetProfile.setVisible(True)
def font_settings_off(self): def font_settings_off(self):
self.fullscreenButton.setVisible(True) self.fullscreenButton.setVisible(True)
@@ -180,6 +184,7 @@ class BookToolBar(QtWidgets.QToolBar):
self.tocBoxAction.setVisible(True) self.tocBoxAction.setVisible(True)
self.searchBarAction.setVisible(True) self.searchBarAction.setVisible(True)
self.resetProfile.setVisible(False)
class LibraryToolBar(QtWidgets.QToolBar): class LibraryToolBar(QtWidgets.QToolBar):
@@ -304,7 +309,6 @@ class Tab(QtWidgets.QWidget):
self.contentView.setSearchPaths(relative_paths) self.contentView.setSearchPaths(relative_paths)
self.contentView.setOpenLinks(False) # Change this when HTML navigation works self.contentView.setOpenLinks(False) # Change this when HTML navigation works
self.contentView.setHtml(chapter_content) self.contentView.setHtml(chapter_content)
self.contentView.setAlignment(QtCore.Qt.AlignCenter)
self.generate_keyboard_shortcuts() self.generate_keyboard_shortcuts()
@@ -357,7 +361,7 @@ class Tab(QtWidgets.QWidget):
if self.sender().objectName() == 'nextChapter': if self.sender().objectName() == 'nextChapter':
direction = 1 direction = 1
self.contentView.change_chapter(direction) self.contentView.change_chapter(direction, True)
def sneaky_exit(self): def sneaky_exit(self):
self.contentView.hide() self.contentView.hide()
@@ -368,8 +372,18 @@ class PliantQTextBrowser(QtWidgets.QTextBrowser):
def __init__(self, main_window, parent=None): def __init__(self, main_window, parent=None):
super(PliantQTextBrowser, self).__init__(parent) super(PliantQTextBrowser, self).__init__(parent)
self.main_window = main_window self.main_window = main_window
self.ignore_wheel_event = False
self.ignore_wheel_event_number = 0
def wheelEvent(self, event): def wheelEvent(self, event):
if self.ignore_wheel_event:
# Ignore first n wheel events after a chapter change
self.ignore_wheel_event_number += 1
if self.ignore_wheel_event_number > 20:
self.ignore_wheel_event = False
self.ignore_wheel_event_number = 0
return
QtWidgets.QTextBrowser.wheelEvent(self, event) QtWidgets.QTextBrowser.wheelEvent(self, event)
# Since this is a delta on a mouse move event, it cannot ever be 0 # Since this is a delta on a mouse move event, it cannot ever be 0
@@ -379,7 +393,7 @@ class PliantQTextBrowser(QtWidgets.QTextBrowser):
elif vertical_pdelta < 0: elif vertical_pdelta < 0:
moving_up = False moving_up = False
if abs(vertical_pdelta) > 150: # Adjust sensitivity here if abs(vertical_pdelta) > 100: # Adjust sensitivity here
# Implies that no scrollbar movement is possible # Implies that no scrollbar movement is possible
if self.verticalScrollBar().value() == self.verticalScrollBar().maximum() == 0: if self.verticalScrollBar().value() == self.verticalScrollBar().maximum() == 0:
if moving_up: if moving_up:
@@ -397,7 +411,7 @@ class PliantQTextBrowser(QtWidgets.QTextBrowser):
if moving_up: if moving_up:
self.change_chapter(-1) self.change_chapter(-1)
def change_chapter(self, direction): def change_chapter(self, direction, was_button_pressed=None):
current_toc_index = self.main_window.bookToolBar.tocBox.currentIndex() current_toc_index = self.main_window.bookToolBar.tocBox.currentIndex()
max_toc_index = self.main_window.bookToolBar.tocBox.count() - 1 max_toc_index = self.main_window.bookToolBar.tocBox.count() - 1
@@ -405,6 +419,15 @@ class PliantQTextBrowser(QtWidgets.QTextBrowser):
current_toc_index > 0 and direction == -1): current_toc_index > 0 and direction == -1):
self.main_window.bookToolBar.tocBox.setCurrentIndex(current_toc_index + direction) self.main_window.bookToolBar.tocBox.setCurrentIndex(current_toc_index + direction)
# Set page position depending on if the chapter number is increasing or decreasing
if direction == 1 or was_button_pressed:
self.verticalScrollBar().setValue(0)
else:
self.verticalScrollBar().setValue(
self.verticalScrollBar().maximum())
self.ignore_wheel_event = True
class LibraryDelegate(QtWidgets.QStyledItemDelegate): class LibraryDelegate(QtWidgets.QStyledItemDelegate):
def __init__(self, temp_dir, parent=None): def __init__(self, temp_dir, parent=None):