Update flatpak manifest
Implement automated missing cover downloading
This commit is contained in:
		
							
								
								
									
										3
									
								
								TODO
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								TODO
									
									
									
									
									
								
							| @@ -33,6 +33,8 @@ TODO | |||||||
|         ✓ Include (action) icons with the applications |         ✓ Include (action) icons with the applications | ||||||
|         ✓ Drag and drop support for the library |         ✓ Drag and drop support for the library | ||||||
|         ✓ Tab reordering |         ✓ Tab reordering | ||||||
|  |         Additional Settings: | ||||||
|  |            ✓ Create covers for books without them - VERY SLOW | ||||||
|         Set focus to newly added file |         Set focus to newly added file | ||||||
|     Reading: |     Reading: | ||||||
|         ✓ Drop down for TOC |         ✓ Drop down for TOC | ||||||
| @@ -101,7 +103,6 @@ TODO | |||||||
|         Additional Settings: |         Additional Settings: | ||||||
|             Disable progressbar - 20% book addition speed improvement |             Disable progressbar - 20% book addition speed improvement | ||||||
|             Disable cover loading when reading - Saves ~2M / book |             Disable cover loading when reading - Saves ~2M / book | ||||||
|             Create covers for books without them - VERY SLOW |  | ||||||
|         Special formatting for each chapter's title |         Special formatting for each chapter's title | ||||||
|         Signal end of chapter with some text |         Signal end of chapter with some text | ||||||
|         Graphical themes |         Graphical themes | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| { | { | ||||||
| 	"app-id":"com.basiomeuspuga.Lector", | 	"app-id":"com.basiomeuspuga.Lector", | ||||||
| 	"runtime":"org.kde.Platform", | 	"runtime":"org.kde.Platform", | ||||||
| 	"runtime-version":"5.10", | 	"runtime-version":"5.12", | ||||||
| 	"sdk":"org.kde.Sdk", | 	"sdk":"org.kde.Sdk", | ||||||
| 	"command":"lector", | 	"command":"lector", | ||||||
| 	"rename-icon":"Lector", | 	"rename-icon":"Lector", | ||||||
| @@ -21,72 +21,105 @@ | |||||||
| 	}, | 	}, | ||||||
| 	"modules":[ | 	"modules":[ | ||||||
| 		{ | 		{ | ||||||
|             "name": "python", |             "name": "PyQt5", | ||||||
|             "sources": [ |  | ||||||
|                 { |  | ||||||
|                     "type": "archive", |  | ||||||
|                     "url": "https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz", |  | ||||||
|                     "sha256": "159b932bf56aeaa76fd66e7420522d8c8853d486b8567c459b84fe2ed13bcaba" |  | ||||||
|                 } |  | ||||||
|             ] |  | ||||||
|         }, |  | ||||||
| 		  { |  | ||||||
|             "name": "pyqt5", |  | ||||||
|             "buildsystem": "simple", |             "buildsystem": "simple", | ||||||
|             "build-commands": [ |             "build-commands": [ | ||||||
|                 "pip3 install --prefix=/app PyQt5-5.10.1-5.10.1-cp35.cp36.cp37.cp38-abi3-manylinux1_x86_64.whl" |                 "pip3 install --prefix=/app PyQt5-5.12-5.12.1-cp35.cp36.cp37.cp38-abi3-manylinux1_x86_64.whl" | ||||||
| 			], | 			], | ||||||
| 			"modules":[ | 			"modules":[ | ||||||
| 				{ | 				{ | ||||||
| 					"name":"sip", | 					"name":"PyQt5-sip", | ||||||
| 					"sources":[ | 					"sources":[ | ||||||
| 						{ | 						{ | ||||||
| 							"type":"file", | 							"type":"file", | ||||||
| 							"url":"https://pypi.python.org/packages/8a/ea/d317ce5696dda4df7c156cd60447cda22833b38106c98250eae1451f03ec/sip-4.19.8-cp36-cp36m-manylinux1_x86_64.whl", | 							"url":"https://files.pythonhosted.org/packages/ae/9c/74fba0b62a0756d214f9aded5b0184130f7866def7532fa68823f34feefa/PyQt5_sip-4.19.14-cp37-cp37m-manylinux1_x86_64.whl", | ||||||
| 							"sha256":"cf98150a99e43fda7ae22abe655b6f202e491d6291486548daa56cb15a2fcf85" | 							"sha256":"04bd0bb8b6f8fa03c2dfbdfff0c8c9bfb3f46a21dd4cac73983dae93bf949523" | ||||||
| 						} | 						} | ||||||
| 					], | 					], | ||||||
| 					"buildsystem":"simple", | 					"buildsystem":"simple", | ||||||
| 					"build-commands":[ | 					"build-commands":[ | ||||||
| 						"pip3 install --prefix=/app sip-4.19.8-cp36-cp36m-manylinux1_x86_64.whl" | 						"pip3 install --prefix=/app PyQt5_sip-4.19.14-cp37-cp37m-manylinux1_x86_64.whl" | ||||||
| 					] | 					] | ||||||
| 				} | 				} | ||||||
| 			], | 			], | ||||||
|             "sources": [ |             "sources": [ | ||||||
|                 { |                 { | ||||||
|                     "type": "file", |                     "type": "file", | ||||||
|                     "url": "https://pypi.python.org/packages/e4/15/4e2e49f64884edbab6f833c6fd3add24d7938f2429aec1f2883e645d4d8f/PyQt5-5.10.1-5.10.1-cp35.cp36.cp37.cp38-abi3-manylinux1_x86_64.whl", |                     "url": "https://files.pythonhosted.org/packages/5e/91/9ac8827d0af428e756f461a3aa7bcbc53d6450edfe026e27569f5ff3689e/PyQt5-5.12-5.12.1-cp35.cp36.cp37.cp38-abi3-manylinux1_x86_64.whl", | ||||||
|                     "sha256": "1e652910bd1ffd23a3a48c510ecad23a57a853ed26b782cd54b16658e6f271ac" |                     "sha256": "fd5946795b39922f971cf92dec799aadc7544b7fa993a79b9f6059f13d817e6e" | ||||||
|                 } |                 } | ||||||
|             ] |             ] | ||||||
|         }, |         }, | ||||||
| 		{ | 		{ | ||||||
| 			"name":"beautifulsoup", | 			"name":"beautifulsoup4", | ||||||
| 			"buildsystem":"simple", | 			"buildsystem":"simple", | ||||||
| 			"sources":[ | 			"sources":[ | ||||||
| 				{ | 				{ | ||||||
| 					"type":"archive", | 					"type":"file", | ||||||
| 					"url":"https://pypi.python.org/packages/fa/8d/1d14391fdaed5abada4e0f63543fef49b8331a34ca60c88bd521bcf7f782/beautifulsoup4-4.6.0.tar.gz", | 					"url":"https://files.pythonhosted.org/packages/1d/5d/3260694a59df0ec52f8b4883f5d23b130bc237602a1411fa670eae12351e/beautifulsoup4-4.7.1-py3-none-any.whl", | ||||||
| 					"sha256":"808b6ac932dccb0a4126558f7dfdcf41710dd44a4ef497a0bb59a77f9f078e89" | 					"sha256":"034740f6cb549b4e932ae1ab975581e6103ac8f942200a0e9759065984391858" | ||||||
|  | 				} | ||||||
|  | 			], | ||||||
|  | 			"modules":[ | ||||||
|  | 				{ | ||||||
|  | 					"name": "soupsieve", | ||||||
|  | 					"sources":[ | ||||||
|  | 						{ | ||||||
|  | 							"type":"file", | ||||||
|  | 							"url":"https://files.pythonhosted.org/packages/bf/b3/2473abf05c4950c6a829ed5dcbc40d8b56d4351d15d6939c8ffb7c6b1a14/soupsieve-1.7.3-py2.py3-none-any.whl", | ||||||
|  | 							"sha256":"466910df7561796a60748826781ebe9a888f7a1668a636ae86783f44d10aae73" | ||||||
|  | 						} | ||||||
|  | 					], | ||||||
|  | 					"buildsystem":"simple", | ||||||
|  | 					"build-commands":[ | ||||||
|  | 						"pip3 install --prefix=/app soupsieve-1.7.3-py2.py3-none-any.whl" | ||||||
|  | 					] | ||||||
| 				} | 				} | ||||||
| 			], | 			], | ||||||
| 			"build-commands":[ | 			"build-commands":[ | ||||||
| 				"python3 setup.py build", | 				"pip3 install --prefix=/app beautifulsoup4-4.7.1-py3-none-any.whl" | ||||||
| 				"python3 setup.py install --prefix=/app" |  | ||||||
| 			] | 			] | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
|             "name": "lxml", | 			"name":"xmltodict", | ||||||
|             "buildsystem": "simple", | 			"buildsystem":"simple", | ||||||
|             "build-commands": [ | 			"sources":[ | ||||||
|                 "pip3 install --prefix=/app lxml-4.2.1-cp36-cp36m-manylinux1_x86_64.whl" |  | ||||||
|             ], |  | ||||||
|             "sources": [ |  | ||||||
| 				{ | 				{ | ||||||
| 					"type": "file", | 					"type": "file", | ||||||
|                     "url": "https://pypi.python.org/packages/a7/b9/ccf46cea0f698b40bca2a9c1a44039c336fe1988b82de4f7353be7a8396a/lxml-4.2.1-cp36-cp36m-manylinux1_x86_64.whl", | 					"url":"https://files.pythonhosted.org/packages/28/fd/30d5c1d3ac29ce229f6bdc40bbc20b28f716e8b363140c26eff19122d8a5/xmltodict-0.12.0-py2.py3-none-any.whl", | ||||||
|                     "sha256": "0e3cd94c95d30ba9ca3cff40e9b2a14e1a10a4fd8131105b86c6b61648f57e4b" | 					"sha256":"8bbcb45cc982f48b2ca8fe7e7827c5d792f217ecf1792626f808bf41c3b86051" | ||||||
| 				} | 				} | ||||||
|  | 			], | ||||||
|  | 			"build-commands":[ | ||||||
|  | 				"pip3 install --prefix=/app xmltodict-0.12.0-py2.py3-none-any.whl" | ||||||
|  | 			] | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  |             "name":"PyMuPDF", | ||||||
|  |             "buildsystem":"simple", | ||||||
|  |             "build-commands": [ | ||||||
|  |                 "pip3 install --prefix=/app PyMuPDF-1.14.8-cp37-cp37m-manylinux1_x86_64.whl" | ||||||
|  |             ], | ||||||
|  |             "sources":[ | ||||||
|  |                 { | ||||||
|  |                     "type": "file", | ||||||
|  |                     "url": "https://files.pythonhosted.org/packages/3c/df/4bfaee2631b505d502c2ba64aa437799f0a64125edb1d4c4c38044ad1ecc/PyMuPDF-1.14.8-cp37-cp37m-manylinux1_x86_64.whl", | ||||||
|  |                     "sha256": "a49798b58cce00e09b8a4431a5f64a400b11a0959f29507187c471208ce040a5" | ||||||
|  |                 } | ||||||
|  |             ] | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  | 			"name":"lxml", | ||||||
|  | 			"buildsystem":"simple", | ||||||
|  | 			"sources":[ | ||||||
|  | 				{ | ||||||
|  | 					"type":"file", | ||||||
|  | 					"url":"https://files.pythonhosted.org/packages/08/f2/04bf04e42c070f65b64dbde02d2c94851251f19f5e9f803cc8f8bc61ac77/lxml-4.3.1-cp37-cp37m-manylinux1_x86_64.whl", | ||||||
|  | 					"sha256":"c0a7751ba1a4bfbe7831920d98cee3ce748007eab8dfda74593d44079568219a" | ||||||
|  | 				} | ||||||
|  | 			], | ||||||
|  | 			"build-commands":[ | ||||||
|  | 				"pip3 install --prefix=/app lxml-4.3.1-cp37-cp37m-manylinux1_x86_64.whl" | ||||||
| 			] | 			] | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
|   | |||||||
| @@ -165,7 +165,10 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): | |||||||
|         self.libraryToolBar.reloadLibraryButton.triggered.connect( |         self.libraryToolBar.reloadLibraryButton.triggered.connect( | ||||||
|             self.settingsDialog.start_library_scan) |             self.settingsDialog.start_library_scan) | ||||||
|         self.libraryToolBar.colorButton.triggered.connect(self.get_color) |         self.libraryToolBar.colorButton.triggered.connect(self.get_color) | ||||||
|         self.libraryToolBar.settingsButton.triggered.connect(self.show_settings) |         self.libraryToolBar.settingsButton.triggered.connect( | ||||||
|  |             lambda: self.show_settings(0)) | ||||||
|  |         self.libraryToolBar.aboutButton.triggered.connect( | ||||||
|  |             lambda: self.show_settings(3)) | ||||||
|         self.libraryToolBar.searchBar.textChanged.connect(self.lib_ref.update_proxymodels) |         self.libraryToolBar.searchBar.textChanged.connect(self.lib_ref.update_proxymodels) | ||||||
|         self.libraryToolBar.sortingBox.activated.connect(self.lib_ref.update_proxymodels) |         self.libraryToolBar.sortingBox.activated.connect(self.lib_ref.update_proxymodels) | ||||||
|         self.libraryToolBar.libraryFilterButton.setPopupMode(QtWidgets.QToolButton.InstantPopup) |         self.libraryToolBar.libraryFilterButton.setPopupMode(QtWidgets.QToolButton.InstantPopup) | ||||||
| @@ -369,7 +372,7 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): | |||||||
|             file_list, |             file_list, | ||||||
|             ('addition', 'manual'), |             ('addition', 'manual'), | ||||||
|             self.database_path, |             self.database_path, | ||||||
|             self.settings['auto_tags'], |             self.settings, | ||||||
|             self.temp_dir.path()) |             self.temp_dir.path()) | ||||||
|  |  | ||||||
|         parsed_books = books.initiate_threads() |         parsed_books = books.initiate_threads() | ||||||
| @@ -423,7 +426,7 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): | |||||||
|             file_paths, |             file_paths, | ||||||
|             ('reading', None), |             ('reading', None), | ||||||
|             self.database_path, |             self.database_path, | ||||||
|             True, |             self.settings, | ||||||
|             self.temp_dir.path()).initiate_threads() |             self.temp_dir.path()).initiate_threads() | ||||||
|  |  | ||||||
|         # TODO |         # TODO | ||||||
| @@ -739,9 +742,15 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): | |||||||
|             else: |             else: | ||||||
|                 self.statusBar.setVisible(True) |                 self.statusBar.setVisible(True) | ||||||
|  |  | ||||||
|     def show_settings(self): |     def show_settings(self, stacked_widget_index): | ||||||
|         if not self.settingsDialog.isVisible(): |         if not self.settingsDialog.isVisible(): | ||||||
|             self.settingsDialog.show() |             self.settingsDialog.show() | ||||||
|  |             self.settingsDialog.okButton.setVisible(False) | ||||||
|  |             index = self.settingsDialog.listModel.index( | ||||||
|  |                 stacked_widget_index, 0) | ||||||
|  |             self.settingsDialog.listView.setCurrentIndex(index) | ||||||
|  |             self.settingsDialog.stackedWidget.setCurrentIndex( | ||||||
|  |                 stacked_widget_index) | ||||||
|         else: |         else: | ||||||
|             self.settingsDialog.hide() |             self.settingsDialog.hide() | ||||||
|  |  | ||||||
|   | |||||||
| @@ -64,6 +64,8 @@ class FB2: | |||||||
|             'author').getText(separator=' ').replace('\n', ' ') |             'author').getText(separator=' ').replace('\n', ' ') | ||||||
|         if author == '' or author is None: |         if author == '' or author is None: | ||||||
|             author = '<Unknown>' |             author = '<Unknown>' | ||||||
|  |         else: | ||||||
|  |             author = author.strip() | ||||||
|  |  | ||||||
|         # TODO |         # TODO | ||||||
|         # Account for other date formats |         # Account for other date formats | ||||||
|   | |||||||
| @@ -175,6 +175,20 @@ | |||||||
|                   </item> |                   </item> | ||||||
|                  </layout> |                  </layout> | ||||||
|                 </item> |                 </item> | ||||||
|  |                 <item> | ||||||
|  |                  <layout class="QHBoxLayout" name="horizontalLayout_16"> | ||||||
|  |                   <item> | ||||||
|  |                    <widget class="QCheckBox" name="autoCover"> | ||||||
|  |                     <property name="toolTip"> | ||||||
|  |                      <string><html><head/><body><p>Attempt to download missing book covers from Google books - SLOW</p></body></html></string> | ||||||
|  |                     </property> | ||||||
|  |                     <property name="text"> | ||||||
|  |                      <string>Download missing covers</string> | ||||||
|  |                     </property> | ||||||
|  |                    </widget> | ||||||
|  |                   </item> | ||||||
|  |                  </layout> | ||||||
|  |                 </item> | ||||||
|                </layout> |                </layout> | ||||||
|               </item> |               </item> | ||||||
|              </layout> |              </layout> | ||||||
|   | |||||||
| @@ -106,6 +106,12 @@ class Ui_Dialog(object): | |||||||
|         self.attenuateTitles.setObjectName("attenuateTitles") |         self.attenuateTitles.setObjectName("attenuateTitles") | ||||||
|         self.horizontalLayout_9.addWidget(self.attenuateTitles) |         self.horizontalLayout_9.addWidget(self.attenuateTitles) | ||||||
|         self.verticalLayout_2.addLayout(self.horizontalLayout_9) |         self.verticalLayout_2.addLayout(self.horizontalLayout_9) | ||||||
|  |         self.horizontalLayout_16 = QtWidgets.QHBoxLayout() | ||||||
|  |         self.horizontalLayout_16.setObjectName("horizontalLayout_16") | ||||||
|  |         self.autoCover = QtWidgets.QCheckBox(self.groupBox) | ||||||
|  |         self.autoCover.setObjectName("autoCover") | ||||||
|  |         self.horizontalLayout_16.addWidget(self.autoCover) | ||||||
|  |         self.verticalLayout_2.addLayout(self.horizontalLayout_16) | ||||||
|         self.gridLayout_4.addLayout(self.verticalLayout_2, 0, 0, 1, 1) |         self.gridLayout_4.addLayout(self.verticalLayout_2, 0, 0, 1, 1) | ||||||
|         self.verticalLayout.addWidget(self.groupBox) |         self.verticalLayout.addWidget(self.groupBox) | ||||||
|         self.groupBox_2 = QtWidgets.QGroupBox(self.switchPage) |         self.groupBox_2 = QtWidgets.QGroupBox(self.switchPage) | ||||||
| @@ -342,6 +348,8 @@ class Ui_Dialog(object): | |||||||
|         self.performCulling.setText(_translate("Dialog", "Load covers only when needed")) |         self.performCulling.setText(_translate("Dialog", "Load covers only when needed")) | ||||||
|         self.autoTags.setText(_translate("Dialog", "Generate tags from files")) |         self.autoTags.setText(_translate("Dialog", "Generate tags from files")) | ||||||
|         self.attenuateTitles.setText(_translate("Dialog", "Shrink long book titles")) |         self.attenuateTitles.setText(_translate("Dialog", "Shrink long book titles")) | ||||||
|  |         self.autoCover.setToolTip(_translate("Dialog", "<html><head/><body><p>Attempt to download missing book covers from Google books - SLOW</p></body></html>")) | ||||||
|  |         self.autoCover.setText(_translate("Dialog", "Download missing covers")) | ||||||
|         self.groupBox_2.setTitle(_translate("Dialog", "Reading")) |         self.groupBox_2.setTitle(_translate("Dialog", "Reading")) | ||||||
|         self.hideScrollBars.setToolTip(_translate("Dialog", "Horizontal scrolling with Alt + Scroll\n" |         self.hideScrollBars.setToolTip(_translate("Dialog", "Horizontal scrolling with Alt + Scroll\n" | ||||||
| "Reopen book to see changes")) | "Reopen book to see changes")) | ||||||
|   | |||||||
| @@ -122,6 +122,8 @@ class Settings: | |||||||
|             'cachingEnabled', 'True').capitalize()) |             'cachingEnabled', 'True').capitalize()) | ||||||
|         self.parent.settings['hide_scrollbars'] = literal_eval(self.settings.value( |         self.parent.settings['hide_scrollbars'] = literal_eval(self.settings.value( | ||||||
|             'hideScrollBars', 'False').capitalize()) |             'hideScrollBars', 'False').capitalize()) | ||||||
|  |         self.parent.settings['auto_cover'] = literal_eval(self.settings.value( | ||||||
|  |             'autoCover', 'False').capitalize()) | ||||||
|         self.parent.settings['scroll_speed'] = int(self.settings.value('scrollSpeed', 7)) |         self.parent.settings['scroll_speed'] = int(self.settings.value('scrollSpeed', 7)) | ||||||
|         self.parent.settings['consider_read_at'] = int(self.settings.value('considerReadAt', 95)) |         self.parent.settings['consider_read_at'] = int(self.settings.value('considerReadAt', 95)) | ||||||
|         self.parent.settings['small_increment'] = int(self.settings.value('smallIncrement', 4)) |         self.parent.settings['small_increment'] = int(self.settings.value('smallIncrement', 4)) | ||||||
| @@ -211,6 +213,7 @@ class Settings: | |||||||
|         self.settings.setValue('cachingEnabled', str(current_settings['caching_enabled'])) |         self.settings.setValue('cachingEnabled', str(current_settings['caching_enabled'])) | ||||||
|         self.settings.setValue('hideScrollBars', str(current_settings['hide_scrollbars'])) |         self.settings.setValue('hideScrollBars', str(current_settings['hide_scrollbars'])) | ||||||
|         self.settings.setValue('attenuateTitles', str(current_settings['attenuate_titles'])) |         self.settings.setValue('attenuateTitles', str(current_settings['attenuate_titles'])) | ||||||
|  |         self.settings.setValue('autoCover', str(current_settings['auto_cover'])) | ||||||
|         self.settings.setValue('scrollSpeed', current_settings['scroll_speed']) |         self.settings.setValue('scrollSpeed', current_settings['scroll_speed']) | ||||||
|         self.settings.setValue('considerReadAt', current_settings['consider_read_at']) |         self.settings.setValue('considerReadAt', current_settings['consider_read_at']) | ||||||
|         self.settings.setValue('mangaMode', str(current_settings['manga_mode'])) |         self.settings.setValue('mangaMode', str(current_settings['manga_mode'])) | ||||||
|   | |||||||
| @@ -99,6 +99,7 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog): | |||||||
|         self.cachingEnabled.setChecked(self.main_window.settings['caching_enabled']) |         self.cachingEnabled.setChecked(self.main_window.settings['caching_enabled']) | ||||||
|         self.hideScrollBars.setChecked(self.main_window.settings['hide_scrollbars']) |         self.hideScrollBars.setChecked(self.main_window.settings['hide_scrollbars']) | ||||||
|         self.attenuateTitles.setChecked(self.main_window.settings['attenuate_titles']) |         self.attenuateTitles.setChecked(self.main_window.settings['attenuate_titles']) | ||||||
|  |         self.autoCover.setChecked(self.main_window.settings['auto_cover']) | ||||||
|         self.scrollSpeedSlider.setValue(self.main_window.settings['scroll_speed']) |         self.scrollSpeedSlider.setValue(self.main_window.settings['scroll_speed']) | ||||||
|         self.readAtPercent.setValue(self.main_window.settings['consider_read_at']) |         self.readAtPercent.setValue(self.main_window.settings['consider_read_at']) | ||||||
|         self.smallIncrementBox.setValue(self.main_window.settings['small_increment']) |         self.smallIncrementBox.setValue(self.main_window.settings['small_increment']) | ||||||
| @@ -112,6 +113,7 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog): | |||||||
|         self.cachingEnabled.clicked.connect(self.manage_checkboxes) |         self.cachingEnabled.clicked.connect(self.manage_checkboxes) | ||||||
|         self.hideScrollBars.clicked.connect(self.manage_checkboxes) |         self.hideScrollBars.clicked.connect(self.manage_checkboxes) | ||||||
|         self.attenuateTitles.clicked.connect(self.manage_checkboxes) |         self.attenuateTitles.clicked.connect(self.manage_checkboxes) | ||||||
|  |         self.autoCover.clicked.connect(self.manage_checkboxes) | ||||||
|         self.scrollSpeedSlider.valueChanged.connect(self.change_scroll_speed) |         self.scrollSpeedSlider.valueChanged.connect(self.change_scroll_speed) | ||||||
|         self.readAtPercent.valueChanged.connect(self.change_read_at) |         self.readAtPercent.valueChanged.connect(self.change_read_at) | ||||||
|         self.smallIncrementBox.valueChanged.connect(self.change_increment) |         self.smallIncrementBox.valueChanged.connect(self.change_increment) | ||||||
| @@ -390,7 +392,8 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog): | |||||||
|             'performCulling': 'perform_culling', |             'performCulling': 'perform_culling', | ||||||
|             'cachingEnabled': 'caching_enabled', |             'cachingEnabled': 'caching_enabled', | ||||||
|             'hideScrollBars': 'hide_scrollbars', |             'hideScrollBars': 'hide_scrollbars', | ||||||
|             'attenuateTitles': 'attenuate_titles'} |             'attenuateTitles': 'attenuate_titles', | ||||||
|  |             'autoCover': 'auto_cover'} | ||||||
|  |  | ||||||
|         self.main_window.settings[ |         self.main_window.settings[ | ||||||
|             sender_dict[sender]] = not self.main_window.settings[sender_dict[sender]] |             sender_dict[sender]] = not self.main_window.settings[sender_dict[sender]] | ||||||
|   | |||||||
| @@ -102,7 +102,7 @@ class UpdateProgress(QtCore.QObject): | |||||||
|  |  | ||||||
|  |  | ||||||
| class BookSorter: | class BookSorter: | ||||||
|     def __init__(self, file_list, mode, database_path, auto_tags=True, temp_dir=None): |     def __init__(self, file_list, mode, database_path, settings, temp_dir=None): | ||||||
|         # Have the GUI pass a list of files straight to here |         # Have the GUI pass a list of files straight to here | ||||||
|         # Then, on the basis of what is needed, pass the |         # Then, on the basis of what is needed, pass the | ||||||
|         # filenames to the requisite functions |         # filenames to the requisite functions | ||||||
| @@ -115,7 +115,8 @@ class BookSorter: | |||||||
|         self.work_mode = mode[0] |         self.work_mode = mode[0] | ||||||
|         self.addition_mode = mode[1] |         self.addition_mode = mode[1] | ||||||
|         self.database_path = database_path |         self.database_path = database_path | ||||||
|         self.auto_tags = auto_tags |         self.auto_tags = settings['auto_tags'] | ||||||
|  |         self.auto_cover = settings['auto_cover'] | ||||||
|         self.temp_dir = temp_dir |         self.temp_dir = temp_dir | ||||||
|         if database_path: |         if database_path: | ||||||
|             self.database_hashes() |             self.database_hashes() | ||||||
| @@ -245,10 +246,9 @@ class BookSorter: | |||||||
|             if cover_image_raw: |             if cover_image_raw: | ||||||
|                 cover_image = resize_image(cover_image_raw) |                 cover_image = resize_image(cover_image_raw) | ||||||
|             else: |             else: | ||||||
|                 # TODO |  | ||||||
|                 # Needs an option |  | ||||||
|                 # cover_image = fetch_cover(title, author) |  | ||||||
|                 cover_image = None |                 cover_image = None | ||||||
|  |                 if self.auto_cover: | ||||||
|  |                     cover_image = fetch_cover(title, author) | ||||||
|  |  | ||||||
|             this_book[file_md5]['cover_image'] = cover_image |             this_book[file_md5]['cover_image'] = cover_image | ||||||
|             this_book[file_md5]['addition_mode'] = self.addition_mode |             this_book[file_md5]['addition_mode'] = self.addition_mode | ||||||
|   | |||||||
| @@ -65,7 +65,7 @@ class BackGroundBookAddition(QtCore.QThread): | |||||||
|             self.file_list, |             self.file_list, | ||||||
|             ('addition', self.addition_mode), |             ('addition', self.addition_mode), | ||||||
|             self.database_path, |             self.database_path, | ||||||
|             self.main_window.settings['auto_tags'], |             self.main_window.settings, | ||||||
|             self.main_window.temp_dir.path()) |             self.main_window.temp_dir.path()) | ||||||
|  |  | ||||||
|         parsed_books = books.initiate_threads() |         parsed_books = books.initiate_threads() | ||||||
|   | |||||||
| @@ -383,16 +383,6 @@ class LibraryToolBar(QtWidgets.QToolBar): | |||||||
|             image_factory.get_image('remove'), |             image_factory.get_image('remove'), | ||||||
|             self._translate('LibraryToolBar', 'Delete book'), |             self._translate('LibraryToolBar', 'Delete book'), | ||||||
|             self) |             self) | ||||||
|         self.colorButton = QtWidgets.QAction( |  | ||||||
|             image_factory.get_image('color-picker'), |  | ||||||
|             self._translate('LibraryToolBar', 'Library background color'), |  | ||||||
|             self) |  | ||||||
|         self.colorButton.setObjectName('libraryBackground') |  | ||||||
|         self.settingsButton = QtWidgets.QAction( |  | ||||||
|             image_factory.get_image('settings'), |  | ||||||
|             self._translate('LibraryToolBar', 'Settings'), |  | ||||||
|             self) |  | ||||||
|         self.settingsButton.setCheckable(True) |  | ||||||
|  |  | ||||||
|         self.coverViewButton = QtWidgets.QAction( |         self.coverViewButton = QtWidgets.QAction( | ||||||
|             image_factory.get_image('view-grid'), |             image_factory.get_image('view-grid'), | ||||||
| @@ -416,6 +406,22 @@ class LibraryToolBar(QtWidgets.QToolBar): | |||||||
|         self.libraryFilterButton.setToolTip( |         self.libraryFilterButton.setToolTip( | ||||||
|             self._translate('LibraryToolBar', 'Filter library')) |             self._translate('LibraryToolBar', 'Filter library')) | ||||||
|  |  | ||||||
|  |         self.colorButton = QtWidgets.QAction( | ||||||
|  |             image_factory.get_image('color-picker'), | ||||||
|  |             self._translate('LibraryToolBar', 'Library background color'), | ||||||
|  |             self) | ||||||
|  |         self.colorButton.setObjectName('libraryBackground') | ||||||
|  |         self.settingsButton = QtWidgets.QAction( | ||||||
|  |             image_factory.get_image('settings'), | ||||||
|  |             self._translate('LibraryToolBar', 'Settings'), | ||||||
|  |             self) | ||||||
|  |         self.settingsButton.setCheckable(True) | ||||||
|  |  | ||||||
|  |         self.aboutButton = QtWidgets.QAction( | ||||||
|  |             image_factory.get_image('about'), | ||||||
|  |             self._translate('LibraryToolBar', 'About'), | ||||||
|  |             self) | ||||||
|  |  | ||||||
|         # Auto unchecks the other QToolButton in case of clicking |         # Auto unchecks the other QToolButton in case of clicking | ||||||
|         self.viewButtons = QtWidgets.QActionGroup(self) |         self.viewButtons = QtWidgets.QActionGroup(self) | ||||||
|         self.viewButtons.setExclusive(True) |         self.viewButtons.setExclusive(True) | ||||||
| @@ -434,6 +440,7 @@ class LibraryToolBar(QtWidgets.QToolBar): | |||||||
|         self.addSeparator() |         self.addSeparator() | ||||||
|         self.addAction(self.colorButton) |         self.addAction(self.colorButton) | ||||||
|         self.addAction(self.settingsButton) |         self.addAction(self.settingsButton) | ||||||
|  |         self.addAction(self.aboutButton) | ||||||
|  |  | ||||||
|         # Filter |         # Filter | ||||||
|         sizePolicy = QtWidgets.QSizePolicy( |         sizePolicy = QtWidgets.QSizePolicy( | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user