Embed icon theme
This commit is contained in:
@@ -28,6 +28,7 @@ from lector.widgets import Tab
|
||||
from lector.delegates import LibraryDelegate
|
||||
from lector.threaded import BackGroundTabUpdate, BackGroundBookAddition, BackGroundBookDeletion
|
||||
from lector.library import Library
|
||||
from lector.guifunctions import QImageFactory
|
||||
from lector.settings import Settings
|
||||
from lector.settingsdialog import SettingsUI
|
||||
from lector.metadatadialog import MetadataUI
|
||||
@@ -51,6 +52,13 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
||||
self.database_path = None
|
||||
self.active_library_filters = []
|
||||
|
||||
# Initialize application
|
||||
Settings(self).read_settings() # This should populate all variables that need
|
||||
# to be remembered across sessions
|
||||
|
||||
# Initialize icon factory
|
||||
self.QImageFactory = QImageFactory(self)
|
||||
|
||||
# Initialize toolbars
|
||||
self.libraryToolBar = LibraryToolBar(self)
|
||||
self.bookToolBar = BookToolBar(self)
|
||||
@@ -61,10 +69,6 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
||||
self.toolbarToggle = QtWidgets.QToolButton()
|
||||
self.reloadLibrary = QtWidgets.QToolButton()
|
||||
|
||||
# Initialize application
|
||||
Settings(self).read_settings() # This should populate all variables that need
|
||||
# to be remembered across sessions
|
||||
|
||||
# Create the database in case it doesn't exist
|
||||
database.DatabaseInit(self.database_path)
|
||||
|
||||
@@ -89,22 +93,13 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
||||
self.sorterProgress.setVisible(False)
|
||||
|
||||
# Statusbar - Toolbar Visibility
|
||||
self.toolbarToggle.setIcon(QtGui.QIcon.fromTheme('visibility'))
|
||||
self.toolbarToggle.setIcon(self.QImageFactory.get_image('visibility'))
|
||||
self.toolbarToggle.setObjectName('toolbarToggle')
|
||||
self.toolbarToggle.setToolTip('Toggle toolbar')
|
||||
self.toolbarToggle.setAutoRaise(True)
|
||||
self.toolbarToggle.clicked.connect(self.toggle_toolbars)
|
||||
self.statusBar.addPermanentWidget(self.toolbarToggle)
|
||||
|
||||
# THIS IS TEMPORARY
|
||||
self.guiTest = QtWidgets.QToolButton()
|
||||
self.guiTest.setIcon(QtGui.QIcon.fromTheme('mail-thread-watch'))
|
||||
self.guiTest.setObjectName('guiTest')
|
||||
self.guiTest.setToolTip('Test Function')
|
||||
self.guiTest.setAutoRaise(True)
|
||||
self.guiTest.clicked.connect(self.test_function)
|
||||
self.statusBar.addPermanentWidget(self.guiTest)
|
||||
|
||||
# Application wide temporary directory
|
||||
self.temp_dir = QtCore.QTemporaryDir()
|
||||
|
||||
@@ -193,7 +188,7 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
||||
print('Available parsers: ' + self.available_parsers)
|
||||
|
||||
# The library refresh button on the Library tab
|
||||
self.reloadLibrary.setIcon(QtGui.QIcon.fromTheme('reload'))
|
||||
self.reloadLibrary.setIcon(self.QImageFactory.get_image('reload'))
|
||||
self.reloadLibrary.setObjectName('reloadLibrary')
|
||||
self.reloadLibrary.setToolTip('Scan library')
|
||||
self.reloadLibrary.setAutoRaise(True)
|
||||
@@ -993,19 +988,19 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
||||
context_menu = QtWidgets.QMenu()
|
||||
|
||||
openAction = context_menu.addAction(
|
||||
QtGui.QIcon.fromTheme('view-readermode'), 'Start reading')
|
||||
self.QImageFactory.get_image('view-readermode'), 'Start reading')
|
||||
|
||||
editAction = None
|
||||
if len(selected_indexes) == 1:
|
||||
editAction = context_menu.addAction(
|
||||
QtGui.QIcon.fromTheme('edit-rename'), 'Edit')
|
||||
self.QImageFactory.get_image('edit-rename'), 'Edit')
|
||||
|
||||
deleteAction = context_menu.addAction(
|
||||
QtGui.QIcon.fromTheme('trash-empty'), 'Delete')
|
||||
self.QImageFactory.get_image('trash-empty'), 'Delete')
|
||||
readAction = context_menu.addAction(
|
||||
QtGui.QIcon.fromTheme('vcs-normal'), 'Mark read')
|
||||
QtGui.QIcon(':/images/checkmark.svg'), 'Mark read')
|
||||
unreadAction = context_menu.addAction(
|
||||
QtGui.QIcon.fromTheme('emblem-unavailable'), 'Mark unread')
|
||||
QtGui.QIcon(':/images/xmark.svg'), 'Mark unread')
|
||||
|
||||
action = context_menu.exec_(self.sender().mapToGlobal(position))
|
||||
|
||||
|
32
lector/guifunctions.py
Normal file
32
lector/guifunctions.py
Normal file
@@ -0,0 +1,32 @@
|
||||
#!usr/bin/env python3
|
||||
|
||||
# This file is a part of Lector, a Qt based ebook reader
|
||||
# Copyright (C) 2018 BasioMeusPuga
|
||||
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from PyQt5 import QtGui
|
||||
from resources import resources
|
||||
|
||||
|
||||
class QImageFactory:
|
||||
def __init__(self, parent):
|
||||
self.parent = parent
|
||||
|
||||
def get_image(self, image_name):
|
||||
icon_theme = self.parent.settings['icon_theme']
|
||||
icon_path = f':/images/{icon_theme}/{image_name}.svg'
|
||||
|
||||
this_qicon = QtGui.QIcon(icon_path)
|
||||
return this_qicon
|
@@ -54,6 +54,7 @@ class Settings:
|
||||
self.parent.settings['main_window_headers'] = self.settings.value('tableHeaders', None)
|
||||
self.parent.settings['listview_background'] = self.settings.value(
|
||||
'listViewBackground', QtGui.QColor().fromRgb(76, 76, 76))
|
||||
self.parent.settings['icon_theme'] = self.settings.value('iconTheme', 'DarkIcons')
|
||||
self.settings.endGroup()
|
||||
|
||||
self.settings.beginGroup('runtimeVariables')
|
||||
@@ -113,6 +114,7 @@ class Settings:
|
||||
self.settings.setValue('windowSize', self.parent.size())
|
||||
self.settings.setValue('windowPosition', self.parent.pos())
|
||||
self.settings.setValue('currentView', self.parent.stackedWidget.currentIndex())
|
||||
self.settings.setValue('iconTheme', self.parent.settings['icon_theme'])
|
||||
self.settings.setValue(
|
||||
'listViewBackground', self.parent.settings['listview_background'])
|
||||
|
||||
|
@@ -69,6 +69,14 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog):
|
||||
self.cancelButton.clicked.connect(self.cancel_pressed)
|
||||
self.aboutButton.clicked.connect(self.about_pressed)
|
||||
|
||||
# Radio buttons
|
||||
if self.parent.settings['icon_theme'] == 'DarkIcons':
|
||||
self.darkIconsRadio.setChecked(True)
|
||||
else:
|
||||
self.lightIconsRadio.setChecked(True)
|
||||
self.darkIconsRadio.clicked.connect(self.change_icon_theme)
|
||||
self.lightIconsRadio.clicked.connect(self.change_icon_theme)
|
||||
|
||||
# Check boxes
|
||||
self.autoTags.setChecked(self.parent.settings['auto_tags'])
|
||||
self.coverShadows.setChecked(self.parent.settings['cover_shadows'])
|
||||
@@ -82,6 +90,9 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog):
|
||||
self.fileRemember.clicked.connect(self.manage_checkboxes)
|
||||
self.performCulling.clicked.connect(self.manage_checkboxes)
|
||||
|
||||
self.comicsRemain.setEnabled(False)
|
||||
self.comicsRemain.setToolTip('Not implemented yet')
|
||||
|
||||
# Generate the filesystem treeView
|
||||
self.generate_tree()
|
||||
|
||||
@@ -246,6 +257,12 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog):
|
||||
table_headers.append(self.treeView.columnWidth(i))
|
||||
self.parent.settings['settings_dialog_headers'] = table_headers
|
||||
|
||||
def change_icon_theme(self):
|
||||
if self.sender() == self.darkIconsRadio:
|
||||
self.parent.settings['icon_theme'] = 'DarkIcons'
|
||||
else:
|
||||
self.parent.settings['icon_theme'] = 'LightIcons'
|
||||
|
||||
def change_dictionary_language(self, event):
|
||||
language_dict = {
|
||||
0: 'en',
|
||||
|
@@ -38,22 +38,24 @@ class BookToolBar(QtWidgets.QToolBar):
|
||||
self.setContextMenuPolicy(QtCore.Qt.PreventContextMenu)
|
||||
self.setObjectName("LibraryToolBar")
|
||||
|
||||
image_factory = self.window().QImageFactory
|
||||
|
||||
# Buttons
|
||||
self.fontButton = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('gtk-select-font'),
|
||||
image_factory.get_image('gtk-select-font'),
|
||||
'View settings', self)
|
||||
self.fullscreenButton = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('view-fullscreen'),
|
||||
image_factory.get_image('view-fullscreen'),
|
||||
'Fullscreen', self)
|
||||
self.addBookmarkButton = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('bookmark-new'),
|
||||
image_factory.get_image('bookmark-new'),
|
||||
'Add bookmark', self)
|
||||
self.bookmarkButton = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('bookmarks'),
|
||||
image_factory.get_image('bookmarks'),
|
||||
'Bookmarks', self)
|
||||
self.bookmarkButton.setObjectName('bookmarkButton')
|
||||
self.resetProfile = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('view-refresh'),
|
||||
image_factory.get_image('reload'),
|
||||
'Reset profile', self)
|
||||
|
||||
# Add buttons
|
||||
@@ -77,43 +79,43 @@ class BookToolBar(QtWidgets.QToolBar):
|
||||
self.fontSizeBox.setEditable(True)
|
||||
|
||||
self.paddingUp = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('format-indent-less'),
|
||||
image_factory.get_image('format-indent-less'),
|
||||
'Increase padding', self)
|
||||
self.paddingUp.setObjectName('paddingUp')
|
||||
self.paddingDown = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('format-indent-more'),
|
||||
image_factory.get_image('format-indent-more'),
|
||||
'Decrease padding', self)
|
||||
self.paddingDown.setObjectName('paddingDown')
|
||||
|
||||
self.lineSpacingUp = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('format-line-spacing-triple'),
|
||||
image_factory.get_image('format-line-spacing-triple'),
|
||||
'Increase line spacing', self)
|
||||
self.lineSpacingUp.setObjectName('lineSpacingUp')
|
||||
self.lineSpacingDown = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('format-line-spacing-double'),
|
||||
image_factory.get_image('format-line-spacing-double'),
|
||||
'Decrease line spacing', self)
|
||||
self.lineSpacingDown.setObjectName('lineSpacingDown')
|
||||
|
||||
self.alignLeft = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('format-justify-left'),
|
||||
image_factory.get_image('format-justify-left'),
|
||||
'Left align text', self)
|
||||
self.alignLeft.setObjectName('alignLeft')
|
||||
self.alignLeft.setCheckable(True)
|
||||
|
||||
self.alignRight = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('format-justify-right'),
|
||||
image_factory.get_image('format-justify-right'),
|
||||
'Right align text', self)
|
||||
self.alignRight.setObjectName('alignRight')
|
||||
self.alignRight.setCheckable(True)
|
||||
|
||||
self.alignCenter = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('format-justify-center'),
|
||||
image_factory.get_image('format-justify-center'),
|
||||
'Center align text', self)
|
||||
self.alignCenter.setObjectName('alignCenter')
|
||||
self.alignCenter.setCheckable(True)
|
||||
|
||||
self.alignJustify = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('format-justify-fill'),
|
||||
image_factory.get_image('format-justify-fill'),
|
||||
'Justify text', self)
|
||||
self.alignJustify.setObjectName('alignJustify')
|
||||
self.alignJustify.setCheckable(True)
|
||||
@@ -184,26 +186,26 @@ class BookToolBar(QtWidgets.QToolBar):
|
||||
|
||||
# Comic view modification
|
||||
self.zoomIn = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('zoom-in'),
|
||||
image_factory.get_image('zoom-in'),
|
||||
'Zoom in', self)
|
||||
self.zoomIn.setObjectName('zoomIn')
|
||||
self.zoomOut = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('zoom-out'),
|
||||
image_factory.get_image('zoom-out'),
|
||||
'Zoom Out', self)
|
||||
self.zoomOut.setObjectName('zoomOut')
|
||||
|
||||
self.fitWidth = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('zoom-fit-width'),
|
||||
image_factory.get_image('zoom-fit-width'),
|
||||
'Fit Width', self)
|
||||
self.fitWidth.setObjectName('fitWidth')
|
||||
self.fitWidth.setCheckable(True)
|
||||
self.bestFit = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('zoom-fit-best'),
|
||||
image_factory.get_image('zoom-fit-best'),
|
||||
'Best Fit', self)
|
||||
self.bestFit.setObjectName('bestFit')
|
||||
self.bestFit.setCheckable(True)
|
||||
self.originalSize = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('zoom-original'),
|
||||
image_factory.get_image('zoom-original'),
|
||||
'Original size', self)
|
||||
self.originalSize.setObjectName('originalSize')
|
||||
self.originalSize.setCheckable(True)
|
||||
@@ -320,27 +322,29 @@ class LibraryToolBar(QtWidgets.QToolBar):
|
||||
self.setContextMenuPolicy(QtCore.Qt.PreventContextMenu)
|
||||
self.setObjectName("LibraryToolBar")
|
||||
|
||||
image_factory = self.window().QImageFactory
|
||||
|
||||
# Buttons
|
||||
self.addButton = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('add'), 'Add book', self)
|
||||
image_factory.get_image('add'), 'Add book', self)
|
||||
self.deleteButton = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('remove'), 'Delete book', self)
|
||||
image_factory.get_image('remove'), 'Delete book', self)
|
||||
self.colorButton = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('color-picker'), 'Library background color', self)
|
||||
image_factory.get_image('color-picker'), 'Library background color', self)
|
||||
self.colorButton.setObjectName('libraryBackground')
|
||||
self.settingsButton = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('settings'), 'Settings', self)
|
||||
image_factory.get_image('settings'), 'Settings', self)
|
||||
self.settingsButton.setCheckable(True)
|
||||
|
||||
self.coverViewButton = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('view-grid'), 'View as covers', self)
|
||||
image_factory.get_image('view-grid'), 'View as covers', self)
|
||||
self.coverViewButton.setCheckable(True)
|
||||
self.tableViewButton = QtWidgets.QAction(
|
||||
QtGui.QIcon.fromTheme('table'), 'View as table', self)
|
||||
image_factory.get_image('table'), 'View as table', self)
|
||||
self.tableViewButton.setCheckable(True)
|
||||
|
||||
self.libraryFilterButton = QtWidgets.QToolButton(self)
|
||||
self.libraryFilterButton.setIcon(QtGui.QIcon.fromTheme('view-readermode'))
|
||||
self.libraryFilterButton.setIcon(image_factory.get_image('view-readermode'))
|
||||
self.libraryFilterButton.setText('Filter library')
|
||||
self.libraryFilterButton.setToolTip('Filter library')
|
||||
|
||||
|
@@ -413,9 +413,9 @@ class Tab(QtWidgets.QWidget):
|
||||
|
||||
bookmark_menu = QtWidgets.QMenu()
|
||||
editAction = bookmark_menu.addAction(
|
||||
QtGui.QIcon.fromTheme('edit-rename'), 'Edit')
|
||||
self.window().QImageFactory.get_image('edit-rename'), 'Edit')
|
||||
deleteAction = bookmark_menu.addAction(
|
||||
QtGui.QIcon.fromTheme('trash-empty'), 'Delete')
|
||||
self.window().QImageFactory.get_image('trash-empty'), 'Delete')
|
||||
|
||||
action = bookmark_menu.exec_(self.dockListView.mapToGlobal(position))
|
||||
|
||||
@@ -657,10 +657,12 @@ class PliantQTextBrowser(QtWidgets.QTextBrowser):
|
||||
if selected_word and selected_word != '':
|
||||
selected_word = selected_word.split()[0]
|
||||
defineAction = context_menu.addAction(
|
||||
QtGui.QIcon.fromTheme('view-readermode'), f'Define "{selected_word}"')
|
||||
self.window().QImageFactory.get_image('view-readermode'),
|
||||
f'Define "{selected_word}"')
|
||||
|
||||
searchAction = context_menu.addAction(
|
||||
QtGui.QIcon.fromTheme('search'), 'Search')
|
||||
self.window().QImageFactory.get_image('search'),
|
||||
'Search')
|
||||
|
||||
action = context_menu.exec_(self.sender().mapToGlobal(position))
|
||||
|
||||
|
Reference in New Issue
Block a user