diff --git a/__main__.py b/__main__.py index 85fef6f..a99ab24 100755 --- a/__main__.py +++ b/__main__.py @@ -40,6 +40,7 @@ ✓ Remember open tabs Special Keyboard shortcuts and view modes for QGraphicsView Selectable background color for QGraphicsView + View and hide toolbar actions in a list Record progress Pagination Set context menu for definitions and the like @@ -268,6 +269,9 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): current_metadata = self.tabWidget.widget( self.tabWidget.currentIndex()).metadata + if self.bookToolBar.fontButton.isChecked(): + self.bookToolBar.customize_view_on() + current_title = current_metadata['title'] current_author = current_metadata['author'] current_position = current_metadata['position'] @@ -277,7 +281,8 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): self.bookToolBar.tocBox.clear() self.bookToolBar.tocBox.addItems(current_toc) if current_position: - self.bookToolBar.tocBox.setCurrentIndex(current_position['current_chapter'] - 1) + self.bookToolBar.tocBox.setCurrentIndex( + current_position['current_chapter'] - 1) self.bookToolBar.tocBox.blockSignals(False) self.format_contentView() diff --git a/resources/raw/settings.ui b/resources/raw/settings.ui index 215a2f0..4e82241 100644 --- a/resources/raw/settings.ui +++ b/resources/raw/settings.ui @@ -6,105 +6,128 @@ 0 0 - 817 - 476 + 550 + 627 Settings - + - - - Library Directories: - - - Qt::AlignCenter + + + Library + + + + + + + true + + + + Path + + + + + Name + + + + + Auto Tag + + + + + + + + + + Add + + + + + + + Remove + + + + + + + Refresh + + + + + + + + - - - true + + + Startup - - - Name - - - - - Path - - - - - Auto Tag - - + + + + + + + Auto add files + + + + + + + Remember open files + + + + + + + Show Library + + + + + + + + + + + About + + + + + + + OK + + + + + + - - - - - - Add - - - - - - - Remove - - - - - - - Refresh - - - - - - - - - Qt::Horizontal - - - - - - - - - Remember open files - - - - - - - Auto add files on start - - - - - - - OK - - - - - diff --git a/resources/settingswindow.py b/resources/settingswindow.py index cadc3e3..d6222c5 100644 --- a/resources/settingswindow.py +++ b/resources/settingswindow.py @@ -11,16 +11,18 @@ from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") - Dialog.resize(817, 476) - self.gridLayout = QtWidgets.QGridLayout(Dialog) - self.gridLayout.setObjectName("gridLayout") + Dialog.resize(550, 627) + self.gridLayout_3 = QtWidgets.QGridLayout(Dialog) + self.gridLayout_3.setObjectName("gridLayout_3") self.verticalLayout_2 = QtWidgets.QVBoxLayout() self.verticalLayout_2.setObjectName("verticalLayout_2") - self.label = QtWidgets.QLabel(Dialog) - self.label.setAlignment(QtCore.Qt.AlignCenter) - self.label.setObjectName("label") - self.verticalLayout_2.addWidget(self.label) - self.tableWidget = QtWidgets.QTableWidget(Dialog) + self.groupBox_2 = QtWidgets.QGroupBox(Dialog) + self.groupBox_2.setObjectName("groupBox_2") + self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBox_2) + self.gridLayout_2.setObjectName("gridLayout_2") + self.verticalLayout = QtWidgets.QVBoxLayout() + self.verticalLayout.setObjectName("verticalLayout") + self.tableWidget = QtWidgets.QTableWidget(self.groupBox_2) self.tableWidget.setAlternatingRowColors(True) self.tableWidget.setObjectName("tableWidget") self.tableWidget.setColumnCount(3) @@ -31,37 +33,48 @@ class Ui_Dialog(object): self.tableWidget.setHorizontalHeaderItem(1, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(2, item) - self.verticalLayout_2.addWidget(self.tableWidget) - self.horizontalLayout_2 = QtWidgets.QHBoxLayout() - self.horizontalLayout_2.setObjectName("horizontalLayout_2") - self.addButton = QtWidgets.QPushButton(Dialog) + self.verticalLayout.addWidget(self.tableWidget) + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.addButton = QtWidgets.QPushButton(self.groupBox_2) self.addButton.setObjectName("addButton") - self.horizontalLayout_2.addWidget(self.addButton) - self.removeButton = QtWidgets.QPushButton(Dialog) + self.horizontalLayout.addWidget(self.addButton) + self.removeButton = QtWidgets.QPushButton(self.groupBox_2) self.removeButton.setObjectName("removeButton") - self.horizontalLayout_2.addWidget(self.removeButton) - self.refreshButton = QtWidgets.QPushButton(Dialog) + self.horizontalLayout.addWidget(self.removeButton) + self.refreshButton = QtWidgets.QPushButton(self.groupBox_2) self.refreshButton.setObjectName("refreshButton") - self.horizontalLayout_2.addWidget(self.refreshButton) - self.verticalLayout_2.addLayout(self.horizontalLayout_2) - self.line = QtWidgets.QFrame(Dialog) - self.line.setFrameShape(QtWidgets.QFrame.HLine) - self.line.setFrameShadow(QtWidgets.QFrame.Sunken) - self.line.setObjectName("line") - self.verticalLayout_2.addWidget(self.line) + self.horizontalLayout.addWidget(self.refreshButton) + self.verticalLayout.addLayout(self.horizontalLayout) + self.gridLayout_2.addLayout(self.verticalLayout, 0, 0, 1, 1) + self.verticalLayout_2.addWidget(self.groupBox_2) + self.groupBox = QtWidgets.QGroupBox(Dialog) + self.groupBox.setObjectName("groupBox") + self.gridLayout = QtWidgets.QGridLayout(self.groupBox) + self.gridLayout.setObjectName("gridLayout") self.horizontalLayout_3 = QtWidgets.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") - self.fileRemember = QtWidgets.QCheckBox(Dialog) - self.fileRemember.setObjectName("fileRemember") - self.horizontalLayout_3.addWidget(self.fileRemember) - self.checkBox = QtWidgets.QCheckBox(Dialog) + self.checkBox = QtWidgets.QCheckBox(self.groupBox) self.checkBox.setObjectName("checkBox") self.horizontalLayout_3.addWidget(self.checkBox) - self.okButton = QtWidgets.QPushButton(Dialog) + self.fileRemember = QtWidgets.QCheckBox(self.groupBox) + self.fileRemember.setObjectName("fileRemember") + self.horizontalLayout_3.addWidget(self.fileRemember) + self.checkBox_2 = QtWidgets.QCheckBox(self.groupBox) + self.checkBox_2.setObjectName("checkBox_2") + self.horizontalLayout_3.addWidget(self.checkBox_2) + self.gridLayout.addLayout(self.horizontalLayout_3, 0, 0, 1, 1) + self.horizontalLayout_2 = QtWidgets.QHBoxLayout() + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + self.aboutButton = QtWidgets.QPushButton(self.groupBox) + self.aboutButton.setObjectName("aboutButton") + self.horizontalLayout_2.addWidget(self.aboutButton) + self.okButton = QtWidgets.QPushButton(self.groupBox) self.okButton.setObjectName("okButton") - self.horizontalLayout_3.addWidget(self.okButton) - self.verticalLayout_2.addLayout(self.horizontalLayout_3) - self.gridLayout.addLayout(self.verticalLayout_2, 0, 0, 1, 1) + self.horizontalLayout_2.addWidget(self.okButton) + self.gridLayout.addLayout(self.horizontalLayout_2, 1, 0, 1, 1) + self.verticalLayout_2.addWidget(self.groupBox) + self.gridLayout_3.addLayout(self.verticalLayout_2, 0, 0, 1, 1) self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) @@ -69,17 +82,20 @@ class Ui_Dialog(object): def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Settings")) - self.label.setText(_translate("Dialog", "Library Directories:")) + self.groupBox_2.setTitle(_translate("Dialog", "Library")) item = self.tableWidget.horizontalHeaderItem(0) - item.setText(_translate("Dialog", "Name")) - item = self.tableWidget.horizontalHeaderItem(1) item.setText(_translate("Dialog", "Path")) + item = self.tableWidget.horizontalHeaderItem(1) + item.setText(_translate("Dialog", "Name")) item = self.tableWidget.horizontalHeaderItem(2) item.setText(_translate("Dialog", "Auto Tag")) self.addButton.setText(_translate("Dialog", "Add")) self.removeButton.setText(_translate("Dialog", "Remove")) self.refreshButton.setText(_translate("Dialog", "Refresh")) + self.groupBox.setTitle(_translate("Dialog", "Startup")) + self.checkBox.setText(_translate("Dialog", "Auto add files")) self.fileRemember.setText(_translate("Dialog", "Remember open files")) - self.checkBox.setText(_translate("Dialog", "Auto add files on start")) + self.checkBox_2.setText(_translate("Dialog", "Show Library")) + self.aboutButton.setText(_translate("Dialog", "About")) self.okButton.setText(_translate("Dialog", "OK")) diff --git a/widgets.py b/widgets.py index b451a10..e716239 100644 --- a/widgets.py +++ b/widgets.py @@ -26,14 +26,18 @@ class BookToolBar(QtWidgets.QToolBar): self.setObjectName("LibraryToolBar") # Buttons - self.fullscreenButton = QtWidgets.QAction( - QtGui.QIcon.fromTheme('view-fullscreen'), 'Fullscreen', self) self.fontButton = QtWidgets.QAction( - QtGui.QIcon.fromTheme('gtk-select-font'), 'Font settings', self) + QtGui.QIcon.fromTheme('gtk-select-font'), + 'Font settings', self) + self.fullscreenButton = QtWidgets.QAction( + QtGui.QIcon.fromTheme('view-fullscreen'), + 'Fullscreen', self) 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) + QtGui.QIcon.fromTheme('view-refresh'), + 'Reset profile', self) # Add buttons self.addAction(self.fontButton) @@ -100,20 +104,73 @@ class BookToolBar(QtWidgets.QToolBar): self.addAction(self.paddingUp) self.addAction(self.paddingDown) - self.fontBoxAction.setVisible(False) - self.fontSizeBoxAction.setVisible(False) - self.fgColorAction.setVisible(False) - self.bgColorAction.setVisible(False) - self.lineSpacingUp.setVisible(False) - self.lineSpacingDown.setVisible(False) - self.paddingUp.setVisible(False) - self.paddingDown.setVisible(False) - self.profileAction.setVisible(False) - self.fontSeparator1.setVisible(False) - self.fontSeparator2.setVisible(False) - self.fontSeparator3.setVisible(False) - self.fontSeparator4.setVisible(False) + self.fontActions = [ + self.fontBoxAction, + self.fontSizeBoxAction, + self.fgColorAction, + self.bgColorAction, + self.lineSpacingUp, + self.lineSpacingDown, + self.paddingUp, + self.paddingDown, + self.profileAction, + self.fontSeparator1, + self.fontSeparator2, + self.fontSeparator3, + self.fontSeparator4, + self.resetProfile] + for i in self.fontActions: + i.setVisible(False) + + # Comic view modification + self.zoomIn = QtWidgets.QAction( + QtGui.QIcon.fromTheme('zoom-in'), + 'Zoom in', self) + self.zoomOut = QtWidgets.QAction( + QtGui.QIcon.fromTheme('zoom-out'), + 'Zoom Out', self) + + self.fitWidth = QtWidgets.QAction( + QtGui.QIcon.fromTheme('zoom-fit-width'), + 'Fit Width', self) + self.fitWidth.setCheckable(True) + self.bestFit = QtWidgets.QAction( + QtGui.QIcon.fromTheme('zoom-fit-best'), + 'Best Fit', self) + self.bestFit.setCheckable(True) + self.originalSize = QtWidgets.QAction( + QtGui.QIcon.fromTheme('zoom-original'), + 'Original size', self) + self.originalSize.setCheckable(True) + + self.comicColorBG = FixedPushButton(self) + self.comicColorBG.setToolTip('Background color') + self.comicColorBG.setObjectName('comicColorBG') + + self.comicSeparator1 = self.addSeparator() + self.addAction(self.zoomIn) + self.addAction(self.zoomOut) + self.addAction(self.fitWidth) + self.addAction(self.bestFit) + self.addAction(self.originalSize) + self.comicSeparator2 = self.addSeparator() + self.comicBGColorAction = self.addWidget(self.comicColorBG) + + self.comicActions = [ + self.comicBGColorAction, + self.zoomIn, + self.zoomOut, + self.fitWidth, + self.bestFit, + self.originalSize, + self.comicSeparator1, + self.comicSeparator2] + + for i in self.comicActions: + i.setVisible(False) + + # Other booktoolbar widgets self.searchBar = FixedLineEdit(self) self.searchBar.setPlaceholderText( 'Search...') @@ -133,59 +190,51 @@ class BookToolBar(QtWidgets.QToolBar): self.tocBoxAction = self.addWidget(self.tocBox) self.searchBarAction = self.addWidget(self.searchBar) + + self.bookActions = [ + self.fullscreenButton, + self.settingsButton, + self.tocBoxAction, + self.searchBarAction] + + for i in self.bookActions: + i.setVisible(True) + self.addAction(self.resetProfile) - self.resetProfile.setVisible(False) def toggle_font_settings(self): if self.fontButton.isChecked(): - self.font_settings_on() + self.customize_view_on() else: - self.font_settings_off() + self.customize_view_off() - def font_settings_on(self): - self.fullscreenButton.setVisible(False) - self.settingsButton.setVisible(False) + def customize_view_on(self): + if self.parent().tabWidget.widget( + self.parent().tabWidget.currentIndex()).metadata['images_only']: + for i in self.comicActions: + i.setVisible(True) - self.fontBoxAction.setVisible(True) - self.fontSizeBoxAction.setVisible(True) - self.fgColorAction.setVisible(True) - self.bgColorAction.setVisible(True) - self.lineSpacingUp.setVisible(True) - self.lineSpacingDown.setVisible(True) - self.paddingUp.setVisible(True) - self.paddingDown.setVisible(True) - self.profileAction.setVisible(True) - self.fontSeparator1.setVisible(True) - self.fontSeparator2.setVisible(True) - self.fontSeparator3.setVisible(True) - self.fontSeparator3.setVisible(True) - self.fontSeparator4.setVisible(False) + for i in self.fontActions: + i.setVisible(False) + else: + for i in self.fontActions: + i.setVisible(True) - self.tocBoxAction.setVisible(False) - self.searchBarAction.setVisible(False) - self.resetProfile.setVisible(True) + for i in self.comicActions: + i.setVisible(False) - def font_settings_off(self): - self.fullscreenButton.setVisible(True) - self.settingsButton.setVisible(True) + for i in self.bookActions: + i.setVisible(False) - self.fontBoxAction.setVisible(False) - self.fontSizeBoxAction.setVisible(False) - self.fgColorAction.setVisible(False) - self.bgColorAction.setVisible(False) - self.lineSpacingUp.setVisible(False) - self.lineSpacingDown.setVisible(False) - self.paddingUp.setVisible(False) - self.paddingDown.setVisible(False) - self.profileAction.setVisible(False) - self.fontSeparator1.setVisible(False) - self.fontSeparator2.setVisible(False) - self.fontSeparator3.setVisible(False) - self.fontSeparator4.setVisible(False) + def customize_view_off(self): + for i in self.fontActions: + i.setVisible(False) - self.tocBoxAction.setVisible(True) - self.searchBarAction.setVisible(True) - self.resetProfile.setVisible(False) + for i in self.comicActions: + i.setVisible(False) + + for i in self.bookActions: + i.setVisible(True) class LibraryToolBar(QtWidgets.QToolBar): @@ -220,8 +269,8 @@ class LibraryToolBar(QtWidgets.QToolBar): sizePolicy = QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) - # self.searchBar = QtWidgets.QLineEdit() self.searchBar = FixedLineEdit(self) + self.searchBar.setClearButtonEnabled(True) self.searchBar.setPlaceholderText( 'Search for Title, Author, Tags...') self.searchBar.setSizePolicy(sizePolicy)