diff --git a/__main__.py b/__main__.py
index 2175807..e21f5bb 100755
--- a/__main__.py
+++ b/__main__.py
@@ -770,6 +770,7 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
signal_sender = self.sender().objectName()
+ # Special cases that don't affect (comic)book display
if signal_sender == 'libraryBackground':
current_color = self.settings['listview_background']
new_color = open_color_dialog(current_color)
@@ -778,6 +779,12 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
self.settings['listview_background'] = new_color
return
+ if signal_sender == 'dialogBackground':
+ current_color = self.settings['dialog_background']
+ new_color = open_color_dialog(current_color)
+ self.settings['dialog_background'] = new_color
+ return new_color
+
profile_index = self.bookToolBar.profileBox.currentIndex()
current_profile = self.bookToolBar.profileBox.itemData(
profile_index, QtCore.Qt.UserRole)
diff --git a/definitionsdialog.py b/definitionsdialog.py
index c662e10..bd5b5d3 100644
--- a/definitionsdialog.py
+++ b/definitionsdialog.py
@@ -27,6 +27,8 @@ class DefinitionsUI(QtWidgets.QDialog, definitions.Ui_Dialog):
super(DefinitionsUI, self).__init__()
self.setupUi(self)
+ self.parent = parent
+
self.setWindowFlags(
QtCore.Qt.Popup |
QtCore.Qt.FramelessWindowHint)
@@ -37,32 +39,20 @@ class DefinitionsUI(QtWidgets.QDialog, definitions.Ui_Dialog):
mask = QtGui.QRegion(path.toFillPolygon().toPolygon())
self.setMask(mask)
- foreground = QtGui.QColor().fromRgb(230, 230, 230)
- background = QtGui.QColor().fromRgb(0, 0, 0)
-
- self.setStyleSheet(
- "QDialog {{background-color: {0}}}".format(background.name()))
- self.definitionView.setStyleSheet(
- "QTextBrowser {{color: {0}; background-color: {1}}}".format(
- foreground.name(), background.name()))
-
self.app_id = 'bb7a91f9'
self.app_key = 'fefacdf6775c347b52e9efa2efe642ef'
- self.language = 'en'
self.root_url = 'https://od-api.oxforddictionaries.com:443/api/v1/inflections/'
self.define_url = 'https://od-api.oxforddictionaries.com:443/api/v1/entries/'
- self.root_url += self.language + '/'
- self.define_url += self.language + '/'
-
self.pronunciation_mp3 = None
self.okButton.clicked.connect(self.hide)
self.pronounceButton.clicked.connect(self.play_pronunciation)
def api_call(self, url, word):
- url = url + word.lower()
+ language = self.parent.settings['dictionary_language']
+ url = url + language + '/' + word.lower()
r = requests.get(
url,
@@ -119,7 +109,8 @@ class DefinitionsUI(QtWidgets.QDialog, definitions.Ui_Dialog):
html_string += f'
{word}
\n'
if nothing_found:
- html_string += f'No definitions found
\n'
+ language = self.parent.settings['dictionary_language'].upper()
+ html_string += f'No definitions found in {language}
\n'
else:
# Word root
html_string += f'Word root: {word_root}
\n'
@@ -137,6 +128,21 @@ class DefinitionsUI(QtWidgets.QDialog, definitions.Ui_Dialog):
self.definitionView.setHtml(html_string)
self.show()
+ def color_background(self, set_initial=False):
+ if set_initial:
+ background = self.parent.settings['dialog_background']
+ else:
+ self.previous_position = self.pos()
+ background = self.parent.get_color()
+
+ self.setStyleSheet(
+ "QDialog {{background-color: {0}}}".format(background.name()))
+ self.definitionView.setStyleSheet(
+ "QTextBrowser {{background-color: {0}}}".format(background.name()))
+
+ if not set_initial:
+ self.show()
+
def play_pronunciation(self):
if not self.pronunciation_mp3:
return
@@ -147,3 +153,12 @@ class DefinitionsUI(QtWidgets.QDialog, definitions.Ui_Dialog):
player = QtMultimedia.QMediaPlayer(self)
player.setMedia(media_content)
player.play()
+
+ def showEvent(self, event):
+ self.color_background(True)
+
+ size = self.size()
+ desktop_size = QtWidgets.QDesktopWidget().screenGeometry()
+ top = (desktop_size.height() / 2) - (size.height() / 2)
+ left = (desktop_size.width() / 2) - (size.width() / 2)
+ self.move(left, top)
diff --git a/metadatadialog.py b/metadatadialog.py
index 37a4169..990defc 100644
--- a/metadatadialog.py
+++ b/metadatadialog.py
@@ -33,21 +33,14 @@ class MetadataUI(QtWidgets.QDialog, metadata.Ui_Dialog):
QtCore.Qt.Popup |
QtCore.Qt.FramelessWindowHint)
+ self.parent = parent
+
radius = 15
path = QtGui.QPainterPath()
path.addRoundedRect(QtCore.QRectF(self.rect()), radius, radius)
mask = QtGui.QRegion(path.toFillPolygon().toPolygon())
self.setMask(mask)
- foreground = QtGui.QColor().fromRgb(230, 230, 230)
- background = QtGui.QColor().fromRgb(0, 0, 0)
- self.setStyleSheet(
- "QDialog {{color: {0}; background-color: {1}}}".format(
- foreground.name(), background.name()))
- self.coverView.setStyleSheet(
- "QGraphicsView {{color: {0}; background-color: {1}}}".format(
- foreground.name(), background.name()))
-
self.parent = parent
self.database_path = self.parent.database_path
@@ -61,7 +54,7 @@ class MetadataUI(QtWidgets.QDialog, metadata.Ui_Dialog):
self.okButton.clicked.connect(self.ok_pressed)
self.cancelButton.clicked.connect(self.cancel_pressed)
- self.colorButton.clicked.connect(self.color_background)
+ self.dialogBackground.clicked.connect(self.color_background)
self.titleLine.returnPressed.connect(self.ok_pressed)
self.authorLine.returnPressed.connect(self.ok_pressed)
@@ -148,8 +141,20 @@ class MetadataUI(QtWidgets.QDialog, metadata.Ui_Dialog):
return QtCore.QPoint(display_x, display_y)
- def color_background(self):
- pass
+ def color_background(self, set_initial=False):
+ if set_initial:
+ background = self.parent.settings['dialog_background']
+ else:
+ self.previous_position = self.pos()
+ background = self.parent.get_color()
+
+ self.setStyleSheet(
+ "QDialog {{background-color: {0}}}".format(background.name()))
+ self.coverView.setStyleSheet(
+ "QGraphicsView {{background-color: {0}}}".format(background.name()))
+
+ if not set_initial:
+ self.show()
def showEvent(self, event):
if self.previous_position:
@@ -159,3 +164,4 @@ class MetadataUI(QtWidgets.QDialog, metadata.Ui_Dialog):
self.move(display_position)
self.titleLine.setFocus()
+ self.color_background(True)
diff --git a/resources/definitions.py b/resources/definitions.py
index 7e1dd24..eddbf6e 100644
--- a/resources/definitions.py
+++ b/resources/definitions.py
@@ -45,6 +45,15 @@ class Ui_Dialog(object):
self.horizontalLayout.addWidget(self.pronounceButton)
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem1)
+ self.dialogBackground = QtWidgets.QPushButton(Dialog)
+ self.dialogBackground.setText("")
+ icon2 = QtGui.QIcon()
+ icon2.addPixmap(QtGui.QPixmap(":/images/color.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.dialogBackground.setIcon(icon2)
+ self.dialogBackground.setIconSize(QtCore.QSize(27, 27))
+ self.dialogBackground.setFlat(True)
+ self.dialogBackground.setObjectName("dialogBackground")
+ self.horizontalLayout.addWidget(self.dialogBackground)
self.verticalLayout.addLayout(self.horizontalLayout)
self.gridLayout.addLayout(self.verticalLayout, 0, 0, 1, 1)
diff --git a/resources/metadata.py b/resources/metadata.py
index f728e2e..6b55722 100644
--- a/resources/metadata.py
+++ b/resources/metadata.py
@@ -67,15 +67,15 @@ class Ui_Dialog(object):
self.horizontalLayout_2.addWidget(self.cancelButton)
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_2.addItem(spacerItem1)
- self.colorButton = QtWidgets.QPushButton(Dialog)
- self.colorButton.setText("")
+ self.dialogBackground = QtWidgets.QPushButton(Dialog)
+ self.dialogBackground.setText("")
icon2 = QtGui.QIcon()
icon2.addPixmap(QtGui.QPixmap(":/images/color.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.colorButton.setIcon(icon2)
- self.colorButton.setIconSize(QtCore.QSize(27, 27))
- self.colorButton.setFlat(True)
- self.colorButton.setObjectName("colorButton")
- self.horizontalLayout_2.addWidget(self.colorButton)
+ self.dialogBackground.setIcon(icon2)
+ self.dialogBackground.setIconSize(QtCore.QSize(27, 27))
+ self.dialogBackground.setFlat(True)
+ self.dialogBackground.setObjectName("dialogBackground")
+ self.horizontalLayout_2.addWidget(self.dialogBackground)
self.verticalLayout.addLayout(self.horizontalLayout_2)
self.horizontalLayout.addLayout(self.verticalLayout)
self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1)
diff --git a/resources/raw/definition.ui b/resources/raw/definition.ui
index 74e762e..f2d3bf4 100644
--- a/resources/raw/definition.ui
+++ b/resources/raw/definition.ui
@@ -100,6 +100,26 @@
+ -
+
+
+
+
+
+
+ :/images/color.svg:/images/color.svg
+
+
+
+ 27
+ 27
+
+
+
+ true
+
+
+
diff --git a/resources/raw/metadata.ui b/resources/raw/metadata.ui
index 7005e73..e0e62d5 100644
--- a/resources/raw/metadata.ui
+++ b/resources/raw/metadata.ui
@@ -170,7 +170,7 @@
-
-
+
diff --git a/resources/raw/settings.ui b/resources/raw/settings.ui
index 592d72a..1b4621b 100644
--- a/resources/raw/settings.ui
+++ b/resources/raw/settings.ui
@@ -6,8 +6,8 @@
0
0
- 929
- 638
+ 1009
+ 658
@@ -93,11 +93,27 @@
-
-
-
- OCPD
-
-
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ Dictionary:
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
+
+
+
+ -
+
+
+
diff --git a/resources/settingswindow.py b/resources/settingswindow.py
index c718e85..47118f7 100644
--- a/resources/settingswindow.py
+++ b/resources/settingswindow.py
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'raw/settings.ui'
#
-# Created by: PyQt5 UI code generator 5.10
+# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!
@@ -11,7 +11,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
- Dialog.resize(929, 638)
+ Dialog.resize(1009, 658)
self.gridLayout_3 = QtWidgets.QGridLayout(Dialog)
self.gridLayout_3.setObjectName("gridLayout_3")
self.verticalLayout_2 = QtWidgets.QVBoxLayout()
@@ -56,9 +56,21 @@ class Ui_Dialog(object):
self.performCulling = QtWidgets.QCheckBox(self.groupBox)
self.performCulling.setObjectName("performCulling")
self.horizontalLayout.addWidget(self.performCulling)
- self.checkBox = QtWidgets.QCheckBox(self.groupBox)
- self.checkBox.setObjectName("checkBox")
- self.horizontalLayout.addWidget(self.checkBox)
+ self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
+ self.horizontalLayout_3.setObjectName("horizontalLayout_3")
+ self.languageLabel = QtWidgets.QLabel(self.groupBox)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.languageLabel.sizePolicy().hasHeightForWidth())
+ self.languageLabel.setSizePolicy(sizePolicy)
+ self.languageLabel.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
+ self.languageLabel.setObjectName("languageLabel")
+ self.horizontalLayout_3.addWidget(self.languageLabel)
+ self.languageBox = QtWidgets.QComboBox(self.groupBox)
+ self.languageBox.setObjectName("languageBox")
+ self.horizontalLayout_3.addWidget(self.languageBox)
+ self.horizontalLayout.addLayout(self.horizontalLayout_3)
self.gridLayout.addLayout(self.horizontalLayout, 1, 0, 1, 1)
self.verticalLayout_2.addWidget(self.groupBox)
self.gridLayout_3.addLayout(self.verticalLayout_2, 0, 0, 1, 1)
@@ -90,7 +102,7 @@ class Ui_Dialog(object):
self.coverShadows.setText(_translate("Dialog", "Cover shadows"))
self.performCulling.setToolTip(_translate("Dialog", "Enabling reduces startup time and memory usage"))
self.performCulling.setText(_translate("Dialog", "Load covers only when needed"))
- self.checkBox.setText(_translate("Dialog", "OCPD"))
+ self.languageLabel.setText(_translate("Dialog", "Dictionary:"))
self.okButton.setText(_translate("Dialog", "Scan Library"))
self.cancelButton.setText(_translate("Dialog", "Close"))
self.aboutButton.setText(_translate("Dialog", "About"))
diff --git a/settings.py b/settings.py
index eb0a61c..bf002a1 100644
--- a/settings.py
+++ b/settings.py
@@ -96,6 +96,13 @@ class Settings:
'rememberFiles', 'True').capitalize())
self.parent.settings['perform_culling'] = literal_eval(self.settings.value(
'performCulling', 'True').capitalize())
+ self.parent.settings['dictionary_language'] = self.settings.value(
+ 'dictionaryLanguage', 'en')
+ self.settings.endGroup()
+
+ self.settings.beginGroup('dialogSettings')
+ self.parent.settings['dialog_background'] = self.settings.value(
+ 'dialogBackground', QtGui.QColor().fromRgb(0, 0, 0))
self.settings.endGroup()
def save_settings(self):
@@ -157,4 +164,9 @@ class Settings:
self.settings.setValue('autoTags', current_settings['auto_tags'])
self.settings.setValue('scanLibraryAtStart', current_settings['scan_library'])
self.settings.setValue('performCulling', current_settings['perform_culling'])
+ self.settings.setValue('dictionaryLanguage', current_settings['dictionary_language'])
+ self.settings.endGroup()
+
+ self.settings.beginGroup('dialogSettings')
+ self.settings.setValue('dialogBackground', current_settings['dialog_background'])
self.settings.endGroup()
diff --git a/settingsdialog.py b/settingsdialog.py
index e546dd3..7fa284c 100644
--- a/settingsdialog.py
+++ b/settingsdialog.py
@@ -41,7 +41,8 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog):
self.move(self.parent.settings['settings_dialog_position'])
self.aboutBox.setVisible(False)
- with open('resources/about.html') as about_html:
+ aboutfile_path = os.path.join('resources', 'about.html')
+ with open(aboutfile_path) as about_html:
self.aboutBox.setHtml(about_html.read())
self.paths = None
@@ -49,6 +50,17 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog):
self.filesystem_model = None
self.tag_data_copy = None
+ languages = ['English', 'Spanish', 'Hindi']
+ self.languageBox.addItems(languages)
+ current_language = self.parent.settings['dictionary_language']
+ if current_language == 'en':
+ self.languageBox.setCurrentIndex(0)
+ elif current_language == 'es':
+ self.languageBox.setCurrentIndex(1)
+ else:
+ self.languageBox.setCurrentIndex(2)
+ self.languageBox.activated.connect(self.change_dictionary_language)
+
self.okButton.setToolTip('Save changes and start library scan')
self.okButton.clicked.connect(self.start_library_scan)
self.cancelButton.clicked.connect(self.cancel_pressed)
@@ -101,7 +113,8 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog):
# Check and see
root_directory = QtCore.QDir().rootPath()
- self.treeView.setRootIndex(self.filesystem_model.setRootPath(root_directory))
+ self.treeView.setRootIndex(
+ self.filesystem_model.setRootPath(root_directory))
# Set the treeView and QFileSystemModel to its desired state
selected_paths = [
@@ -230,6 +243,13 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog):
table_headers.append(self.treeView.columnWidth(i))
self.parent.settings['settings_dialog_headers'] = table_headers
+ def change_dictionary_language(self, event):
+ language_dict = {
+ 0: 'en',
+ 1: 'es',
+ 2: 'hi'}
+ self.parent.settings['dictionary_language'] = language_dict[self.languageBox.currentIndex()]
+
def manage_checkboxes(self, event=None):
sender = self.sender().objectName()
diff --git a/widgets.py b/widgets.py
index 16d9186..0fa0959 100644
--- a/widgets.py
+++ b/widgets.py
@@ -410,7 +410,7 @@ class Tab(QtWidgets.QWidget):
self.bookmark_model.removeRow(index.row())
def hide_mouse(self):
- self.contentView.setCursor(QtCore.Qt.BlankCursor)
+ self.contentView.viewport().setCursor(QtCore.Qt.BlankCursor)
def sneaky_change(self):
direction = -1
@@ -434,6 +434,7 @@ class PliantQGraphicsView(QtWidgets.QGraphicsView):
self.ignore_wheel_event = False
self.ignore_wheel_event_number = 0
self.setDragMode(QtWidgets.QGraphicsView.ScrollHandDrag)
+ self.viewport().setCursor(QtCore.Qt.ArrowCursor)
self.common_functions = PliantWidgetsCommonFunctions(
self, self.main_window)
self.setMouseTracking(True)
@@ -560,7 +561,7 @@ class PliantQGraphicsView(QtWidgets.QGraphicsView):
self.verticalScrollBar().setValue(vertical + scroll_increment)
def mouseMoveEvent(self, *args):
- self.setCursor(QtCore.Qt.ArrowCursor)
+ self.viewport().setCursor(QtCore.Qt.ArrowCursor)
self.parent.mouse_hide_timer.start(3000)
def closeEvent(self, *args):
@@ -582,6 +583,7 @@ class PliantQTextBrowser(QtWidgets.QTextBrowser):
self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
self.customContextMenuRequested.connect(
self.generate_textbrowser_context_menu)
+ self.viewport().setCursor(QtCore.Qt.IBeamCursor)
def wheelEvent(self, event):
self.record_scroll_position()
@@ -600,6 +602,8 @@ class PliantQTextBrowser(QtWidgets.QTextBrowser):
QtWidgets.QTextEdit.keyPressEvent(self, event)
def record_scroll_position(self, return_as_bookmark=False):
+ self.parent.metadata['position']['is_read'] = False
+
vertical = self.verticalScrollBar().value()
maximum = self.verticalScrollBar().maximum()
@@ -648,12 +652,10 @@ class PliantQTextBrowser(QtWidgets.QTextBrowser):
def closeEvent(self, *args):
self.main_window.closeEvent()
- # def mouseMoveEvent(self, event):
- # TODO
- # This does not work as expected
- # event.accept()
- # self.setCursor(QtCore.Qt.ArrowCursor)
- # self.parent.mouse_hide_timer.start(3000)
+ def mouseMoveEvent(self, event):
+ event.accept()
+ self.viewport().setCursor(QtCore.Qt.IBeamCursor)
+ self.parent.mouse_hide_timer.start(3000)
class PliantWidgetsCommonFunctions():