From 9099811c2825990e3f1f3413fe01f6401cba5ade Mon Sep 17 00:00:00 2001 From: BasioMeusPuga Date: Mon, 13 Nov 2017 09:46:41 +0530 Subject: [PATCH] A little further into finalizing Profile setting --- __main__.py | 56 +++++++++++++++++++++++++++++++++++++------------- parsers/cbz.py | 2 +- subclasses.py | 32 +++++++++++++++++++++++++++++ widgets.py | 6 ++++-- 4 files changed, 79 insertions(+), 17 deletions(-) diff --git a/__main__.py b/__main__.py index 1a7e7d4..fa0ff45 100755 --- a/__main__.py +++ b/__main__.py @@ -28,10 +28,10 @@ ✓ Override the keypress event of the textedit ✓ Use format* icons for toolbar buttons ✓ Implement book view settings with a(nother) toolbar - ? Substitute textedit for another widget + ✓ Substitute textedit for another widget + Theming All ebooks should first be added to the database and then returned as HTML Pagination - Theming Set context menu for definitions and the like Keep fontsize and margins consistent - Let page increase in length Filetypes: @@ -97,13 +97,19 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): self.bookToolBar = BookToolBar(self) self.bookToolBar.fullscreenButton.triggered.connect(self.set_fullscreen) - self.bookToolBar.fontBox.activated.connect(self.modify_font) + self.bookToolBar.fontBox.currentFontChanged.connect(self.modify_font) self.bookToolBar.fontSizeUp.triggered.connect(self.modify_font) self.bookToolBar.fontSizeDown.triggered.connect(self.modify_font) self.bookToolBar.lineSpacingUp.triggered.connect(self.modify_font) self.bookToolBar.lineSpacingDown.triggered.connect(self.modify_font) self.bookToolBar.paddingUp.triggered.connect(self.modify_font) self.bookToolBar.paddingDown.triggered.connect(self.modify_font) + for count, i in enumerate(self.display_profiles): + self.bookToolBar.profileBox.setItemData(count, i, QtCore.Qt.UserRole) + self.bookToolBar.profileBox.currentIndexChanged.connect(self.change_display_profile) + self.current_profile = self.bookToolBar.profileBox.itemData( + self.current_profile_index, QtCore.Qt.UserRole) + self.bookToolBar.profileBox.setCurrentIndex(self.current_profile_index) self.bookToolBar.colorBoxFG.clicked.connect(self.get_color) self.bookToolBar.colorBoxBG.clicked.connect(self.get_color) @@ -114,8 +120,7 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): self.tab_switch() self.tabWidget.currentChanged.connect(self.tab_switch) - # New tabs and their contents - self.current_tab = None + # For fullscreening purposes self.current_contentView = None # Tab closing @@ -141,12 +146,14 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): # TODO # Get display profiles from settings # Current using a default - self.current_profile = { - 'foreground': 'grey', - 'background': 'black', - 'padding': 100, - 'font_size': 22, - 'line_spacing': 1.5} + # self.bookToolBar.profileBox.setItemData(1, 'asdadasd', QtCore.Qt.UserRole) + # self.current_profile = { + # 'font': 'Noto Sans', + # 'foreground': 'grey', + # 'background': 'black', + # 'padding': 100, + # 'font_size': 22, + # 'line_spacing': 1.5} def resizeEvent(self, event=None): if event: @@ -269,6 +276,8 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): self.bookToolBar.tocBox.setCurrentIndex(current_position) self.bookToolBar.tocBox.blockSignals(False) + self.format_contentView() + self.statusMessage.setText( current_author + ' - ' + current_title) @@ -353,7 +362,7 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): signal_sender = self.sender().objectName() if signal_sender == 'fontBox': - pass + self.current_profile['font'] = self.bookToolBar.fontBox.currentFont().family() if signal_sender == 'fontSizeUp': self.current_profile['font_size'] += 1 @@ -376,7 +385,14 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): # TODO # Implement line spacing # Implement font changing + # See what happens if a font isn't installed + # print(self.bookToolBar.profileBox.itemData(1, QtCore.Qt.UserRole)) + # print(self.current_profile) + # current_profile = self.bookToolBar.profileBox.itemData() + + + font = self.current_profile['font'] foreground = self.current_profile['foreground'] background = self.current_profile['background'] padding = self.current_profile['padding'] @@ -387,8 +403,20 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): current_contentView = current_tab_widget.findChildren(QtWidgets.QTextBrowser)[0] current_contentView.setStyleSheet( - "QTextEdit {{font-size: {0}px; padding-left: {1}; padding-right: {1}; color: {2}; background-color: {3}}}".format( - font_size, padding, foreground, background)) + "QTextEdit {{font-family: {0}; font-size: {1}px; padding-left: {2}; padding-right: {2}; color: {3}; background-color: {4}}}".format( + font, font_size, padding, foreground, background)) + + def change_display_profile(self): + profile_index = self.bookToolBar.profileBox.currentIndex() + + self.bookToolBar.profileBox.setItemData() + + + + self.current_profile = self.bookToolBar.profileBox.itemData( + profile_index, QtCore.Qt.UserRole) + self.format_contentView() + def closeEvent(self, event=None): # All tabs must be iterated upon here diff --git a/parsers/cbz.py b/parsers/cbz.py index d1a29d3..8a68729 100644 --- a/parsers/cbz.py +++ b/parsers/cbz.py @@ -58,5 +58,5 @@ class ParseCBZ: # TODO # Image resizing, formatting # Cleanup after exit - contents[page_name] = "" % image_path + contents[page_name] = "" % image_path return contents, tmp_dir diff --git a/subclasses.py b/subclasses.py index e3c1c1f..9e2f7e0 100644 --- a/subclasses.py +++ b/subclasses.py @@ -126,6 +126,30 @@ class Settings: self.parent_window = parent self.settings = QtCore.QSettings('Lector', 'Lector') + self.default_profile1 = { + 'font': 'Noto Sans', + 'foreground': '#000000', + 'background': '#d8d8d8', + 'padding': 140, + 'font_size': 20, + 'line_spacing': 1.5} + + self.default_profile2 = { + 'font': 'Roboto', + 'foreground': '#c2c2c2', + 'background': '#161616', + 'padding': 140, + 'font_size': 20, + 'line_spacing': 1.5} + + self.default_profile3 = { + 'font': 'Roboto', + 'foreground': '#657b83', + 'background': '#002b36', + 'padding': 140, + 'font_size': 20, + 'line_spacing': 1.5} + def read_settings(self): self.settings.beginGroup('mainWindow') self.parent_window.resize(self.settings.value( @@ -142,6 +166,14 @@ class Settings: self.parent_window.database_path = self.settings.value( 'databasePath', QtCore.QStandardPaths.writableLocation(QtCore.QStandardPaths.AppDataLocation)) + self.parent_window.display_profiles = self.settings.value( + 'displayProfiles', [ + self.default_profile1, + self.default_profile2, + self.default_profile3]) + self.parent_window.current_profile_index = self.settings.value( + 'currentProfileIndex', 0) + self.settings.endGroup() def save_settings(self): diff --git a/widgets.py b/widgets.py index ac920d6..2d0b30e 100644 --- a/widgets.py +++ b/widgets.py @@ -65,6 +65,7 @@ class BookToolBar(QtWidgets.QToolBar): self.lineSpacingDown.setObjectName('lineSpacingDown') self.fontBox = QtWidgets.QFontComboBox() + self.fontBox.setFontFilters(QtWidgets.QFontComboBox.ScalableFonts) self.fontBox.setObjectName('fontBox') self.colorBoxFG = FixedPushButton(self) @@ -77,6 +78,7 @@ class BookToolBar(QtWidgets.QToolBar): # TODO # Get color profiles from settings # Generate default profiles + # Maybe a default button profiles = ['Profile 1', 'Profile 2', 'Profile 3'] self.profileBox = QtWidgets.QComboBox(self) self.profileBox.addItems(profiles) @@ -288,8 +290,8 @@ class Tab(QtWidgets.QWidget): self.contentView.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.gridLayout.addWidget(self.contentView, 0, 0, 1, 1) self.parent.addTab(self, title) - self.contentView.setStyleSheet( - "QTextEdit {font-size:20px; padding-left:100; padding-right:100; background-color:black}") + # self.contentView.setStyleSheet( + # "QTextEdit {font-size:20px; padding-left:100; padding-right:100; background-color:black}") class LibraryDelegate(QtWidgets.QStyledItemDelegate):