From 8cd8ec4ccd4d5162c46d498d8470a95d2441da27 Mon Sep 17 00:00:00 2001 From: BasioMeusPuga Date: Wed, 29 Nov 2017 00:59:19 +0530 Subject: [PATCH] UI improvements, Start of settings folder traversal --- __main__.py | 2 - library.py | 3 ++ resources/raw/settings.ui | 91 ++++++++++++++++++++++++------------- resources/settingswindow.py | 17 +++++-- settingsdialog.py | 11 +++++ threaded.py | 21 ++++++++- widgets.py | 6 --- 7 files changed, 104 insertions(+), 47 deletions(-) diff --git a/__main__.py b/__main__.py index 2d2bf87..2f7a5d4 100755 --- a/__main__.py +++ b/__main__.py @@ -67,7 +67,6 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): self.libraryToolBar.addButton.triggered.connect(self.add_books) self.libraryToolBar.deleteButton.triggered.connect(self.delete_books) self.libraryToolBar.coverViewButton.triggered.connect(self.switch_library_view) - # self.libraryToolBar.coverViewButton.setChecked(True) self.libraryToolBar.tableViewButton.triggered.connect(self.switch_library_view) self.libraryToolBar.settingsButton.triggered.connect(self.show_settings) self.libraryToolBar.searchBar.textChanged.connect(self.lib_ref.update_proxymodel) @@ -84,7 +83,6 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): # Book toolbar self.bookToolBar = BookToolBar(self) self.bookToolBar.fullscreenButton.triggered.connect(self.set_fullscreen) - self.bookToolBar.settingsButton.triggered.connect(self.show_settings) for count, i in enumerate(self.display_profiles): self.bookToolBar.profileBox.setItemData(count, i, QtCore.Qt.UserRole) diff --git a/library.py b/library.py index 0e1c0d9..6376d52 100644 --- a/library.py +++ b/library.py @@ -140,7 +140,10 @@ class Library: self.table_proxy_model = TableProxyModel() self.table_proxy_model.setSourceModel(self.table_model) self.table_proxy_model.setSortCaseSensitivity(False) + self.table_proxy_model.sort(0, QtCore.Qt.AscendingOrder) self.parent_window.tableView.setModel(self.table_proxy_model) + self.parent_window.tableView.horizontalHeader().setSortIndicator( + 0, QtCore.Qt.AscendingOrder) def update_table_proxy_model(self): self.table_proxy_model.invalidateFilter() diff --git a/resources/raw/settings.ui b/resources/raw/settings.ui index 669b342..dc0cbc5 100644 --- a/resources/raw/settings.ui +++ b/resources/raw/settings.ui @@ -23,41 +23,68 @@ - + + + QFrame::NoFrame + + + QAbstractScrollArea::AdjustToContentsOnFirstShow + + + QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed + + + true + + + QAbstractItemView::SelectRows + + + Qt::NoPen + + + true + + + false + + + true + + + false + + + + + - + + + Search for Paths, Names, Tags... + + - - - - - Search for Paths, Names, Tags... - - - - - - - Add - - - - - - - Remove - - - - - - - Refresh - - - - + + + Add + + + + + + + Remove + + + + + + + Refresh + + diff --git a/resources/settingswindow.py b/resources/settingswindow.py index cf2f40a..697da0c 100644 --- a/resources/settingswindow.py +++ b/resources/settingswindow.py @@ -20,11 +20,19 @@ class Ui_Dialog(object): 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.tableView = QtWidgets.QTableView(self.groupBox_2) + self.tableView.setFrameShape(QtWidgets.QFrame.NoFrame) + self.tableView.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContentsOnFirstShow) + self.tableView.setEditTriggers(QtWidgets.QAbstractItemView.DoubleClicked|QtWidgets.QAbstractItemView.EditKeyPressed) + self.tableView.setAlternatingRowColors(True) + self.tableView.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) + self.tableView.setGridStyle(QtCore.Qt.NoPen) + self.tableView.setSortingEnabled(True) + self.tableView.setWordWrap(False) self.tableView.setObjectName("tableView") - self.verticalLayout.addWidget(self.tableView) + self.tableView.horizontalHeader().setVisible(True) + self.tableView.verticalHeader().setVisible(False) + self.gridLayout_2.addWidget(self.tableView, 0, 0, 1, 1) self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.lineEdit = QtWidgets.QLineEdit(self.groupBox_2) @@ -39,8 +47,7 @@ class Ui_Dialog(object): self.refreshButton = QtWidgets.QPushButton(self.groupBox_2) self.refreshButton.setObjectName("refreshButton") self.horizontalLayout.addWidget(self.refreshButton) - self.verticalLayout.addLayout(self.horizontalLayout) - self.gridLayout_2.addLayout(self.verticalLayout, 0, 0, 1, 1) + self.gridLayout_2.addLayout(self.horizontalLayout, 1, 0, 1, 1) self.verticalLayout_2.addWidget(self.groupBox_2) self.groupBox = QtWidgets.QGroupBox(Dialog) self.groupBox.setObjectName("groupBox") diff --git a/settingsdialog.py b/settingsdialog.py index 63611d0..7c91f15 100644 --- a/settingsdialog.py +++ b/settingsdialog.py @@ -7,6 +7,7 @@ from PyQt5 import QtWidgets, QtGui, QtCore import database from resources import settingswindow +from threaded import BackGroundBookSearch, BackGroundBookAddition class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog): @@ -21,6 +22,8 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog): self.database_data = collections.OrderedDict() self.database_modification = False + self.thread = None + self.addButton.clicked.connect(self.add_directories) def generate_table(self): @@ -58,3 +61,11 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog): # Whatever code you write to recurse through directories will # have to go into the threaded module + + # Traverse directories looking for files + self.thread = BackGroundBookSearch(self, add_directory) + self.thread.finished.connect(self.do_something) + self.thread.start() + + def do_something(self): + print('Book search completed') diff --git a/threaded.py b/threaded.py index d31e092..d01d69a 100644 --- a/threaded.py +++ b/threaded.py @@ -1,10 +1,11 @@ #!/usr/bin/env python3 +import os +from PyQt5 import QtCore + import sorter import database -from PyQt5 import QtCore - class BackGroundTabUpdate(QtCore.QThread): def __init__(self, database_path, all_metadata, parent=None): @@ -38,3 +39,19 @@ class BackGroundBookAddition(QtCore.QThread): parsed_books = books.initiate_threads() database.DatabaseFunctions(self.database_path).add_to_database(parsed_books) self.parent_window.lib_ref.generate_model('addition', parsed_books) + + +class BackGroundBookSearch(QtCore.QThread): + def __init__(self, parent_window, root_directory, parent=None): + super(BackGroundBookSearch, self).__init__(parent) + self.parent_window = parent_window + self.root_directory = root_directory + self.valid_files = [] + + def run(self): + for directory, subdir, files in os.walk(self.root_directory): + for filename in files: + if os.path.splitext(filename)[1][1:] in sorter.available_parsers: + self.valid_files.append(os.path.join(directory, filename)) + + print(self.valid_files) diff --git a/widgets.py b/widgets.py index b248abe..fb4f611 100644 --- a/widgets.py +++ b/widgets.py @@ -31,9 +31,6 @@ class BookToolBar(QtWidgets.QToolBar): self.fullscreenButton = QtWidgets.QAction( QtGui.QIcon.fromTheme('view-fullscreen'), 'Fullscreen', self) - self.settingsButton = QtWidgets.QAction( - QtGui.QIcon.fromTheme('settings'), - 'Settings', self) self.resetProfile = QtWidgets.QAction( QtGui.QIcon.fromTheme('view-refresh'), 'Reset profile', self) @@ -44,8 +41,6 @@ class BookToolBar(QtWidgets.QToolBar): self.fontButton.triggered.connect(self.toggle_font_settings) self.addSeparator() self.addAction(self.fullscreenButton) - self.addAction(self.settingsButton) - self.settingsButton.setCheckable(True) # Font modification font_sizes = [str(i) for i in range(8, 48, 2)] @@ -197,7 +192,6 @@ class BookToolBar(QtWidgets.QToolBar): self.bookActions = [ self.fullscreenButton, - self.settingsButton, self.tocBoxAction, self.searchBarAction]