From 5d5184d32b6179e4560274a2a6b49b341990d20d Mon Sep 17 00:00:00 2001 From: BasioMeusPuga Date: Wed, 8 Nov 2017 03:55:10 +0530 Subject: [PATCH] Refactor toolbars --- __main__.py | 122 ++++++++++++++++++++++++---------------------- database.py | 4 +- mainwindow.py | 13 ----- resources/main.ui | 40 --------------- 4 files changed, 65 insertions(+), 114 deletions(-) diff --git a/__main__.py b/__main__.py index 70b51c5..1499dd3 100755 --- a/__main__.py +++ b/__main__.py @@ -45,18 +45,24 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): # Initialize application Settings(self).read_settings() # This should populate all variables that need # to be remembered across sessions - Toolbars(self) - # This is an ugly hack? - # I can't seem to access the Qcombobox the usual way - self.librarySortingBox = self.LibraryToolBar.findChild(QtWidgets.QComboBox) - self.libraryFilterEdit = self.LibraryToolBar.findChild(QtWidgets.QLineEdit) + # Create toolbars + self.libraryToolBar = LibraryToolBar(self) + self.bookToolBar = BookToolBar(self) + self.addToolBar(self.libraryToolBar) + self.addToolBar(self.bookToolBar) + + # Make the correct toolbar visible + self.toolbar_switch() + self.tabWidget.currentChanged.connect(self.toolbar_switch) + + # Create the database in case it doesn't exist database.DatabaseInit(self.database_path) self.lib_ref = Library(self) self.viewModel = None - # Right align everything in the statusbar + # Create and right align the statusbar label widget self.statusMessage = QtWidgets.QLabel() self.statusMessage.setObjectName('statusMessage') self.statusBar.addPermanentWidget(self.statusMessage) @@ -65,9 +71,6 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): self.current_tab = None self.current_textEdit = None - # Toolbar switching - self.tabWidget.currentChanged.connect(self.toolbar_switch) - # Tab closing self.tabWidget.setTabsClosable(True) self.tabWidget.tabBar().setTabButton(0, QtWidgets.QTabBar.RightSide, None) @@ -134,11 +137,11 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): def toolbar_switch(self): if self.tabWidget.currentIndex() == 0: - self.BookToolBar.hide() - self.LibraryToolBar.show() + self.bookToolBar.hide() + self.libraryToolBar.show() else: - self.BookToolBar.show() - self.LibraryToolBar.hide() + self.bookToolBar.show() + self.libraryToolBar.hide() def set_fullscreen(self): self.current_tab = self.tabWidget.currentIndex() @@ -246,14 +249,14 @@ class Library: proxy_model.setSourceModel(self.parent_window.viewModel) proxy_model.setFilterRole(QtCore.Qt.UserRole + 4) proxy_model.setFilterCaseSensitivity(QtCore.Qt.CaseInsensitive) - proxy_model.setFilterWildcard(self.parent_window.libraryFilterEdit.text()) + proxy_model.setFilterWildcard(self.parent_window.libraryToolBar.filterEdit.text()) self.parent_window.statusMessage.setText( str(proxy_model.rowCount()) + ' books') # Sorting according to roles and the drop down in the library proxy_model.setSortRole( - QtCore.Qt.UserRole + self.parent_window.librarySortingBox.currentIndex()) + QtCore.Qt.UserRole + self.parent_window.libraryToolBar.sortingBox.currentIndex()) proxy_model.sort(0) s = QtCore.QSize(160, 250) # Set icon sizing here @@ -296,68 +299,71 @@ class Settings: self.settings.endGroup() -class Toolbars: - # TODO - # Inheritances so that this self.parent_window. - # bullshit can be removed - def __init__(self, parent): - self.parent_window = parent - self.parent_window.BookToolBar.hide() - self.create_toolbars() +class BookToolBar(QtWidgets.QToolBar): + def __init__(self, parent=None): + super(BookToolBar, self).__init__(parent) + self.parent = parent - def create_toolbars(self): - # Spacer - spacer = QtWidgets.QWidget() - spacer.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) + self.setMovable(False) + self.setIconSize(QtCore.QSize(22, 22)) + self.setFloatable(False) + self.setObjectName("LibraryToolBar") - # Book Toolbar fullscreenButton = QtWidgets.QAction( - QtGui.QIcon.fromTheme('view-fullscreen'), 'Fullscreen', self.parent_window) + QtGui.QIcon.fromTheme('view-fullscreen'), 'Fullscreen', self) + self.addAction(fullscreenButton) + self.setIconSize(QtCore.QSize(22, 22)) - self.parent_window.BookToolBar.addAction(fullscreenButton) - self.parent_window.BookToolBar.setIconSize(QtCore.QSize(22, 22)) + fullscreenButton.triggered.connect(self.parent.set_fullscreen) + + +class LibraryToolBar(QtWidgets.QToolBar): + def __init__(self, parent=None): + super(LibraryToolBar, self).__init__(parent) + self.parent = parent + + self.setMovable(False) + self.setIconSize(QtCore.QSize(22, 22)) + self.setFloatable(False) + self.setObjectName("LibraryToolBar") - fullscreenButton.triggered.connect(self.parent_window.set_fullscreen) - # Library Toolbar addButton = QtWidgets.QAction( - QtGui.QIcon.fromTheme('add'), 'Add book', self.parent_window) + QtGui.QIcon.fromTheme('add'), 'Add book', self) deleteButton = QtWidgets.QAction( - QtGui.QIcon.fromTheme('remove'), 'Delete book', self.parent_window) + QtGui.QIcon.fromTheme('remove'), 'Delete book', self) settingsButton = QtWidgets.QAction( - QtGui.QIcon.fromTheme('settings'), 'Settings', self.parent_window) + QtGui.QIcon.fromTheme('settings'), 'Settings', self) - addButton.triggered.connect(self.parent_window.add_books) - settingsButton.triggered.connect(self.parent_window.create_tab_class) - deleteButton.triggered.connect(self.parent_window.delete_books) + addButton.triggered.connect(self.parent.add_books) + deleteButton.triggered.connect(self.parent.delete_books) # Filter - filterEdit = QtWidgets.QLineEdit() - filterEdit.setPlaceholderText('Search for Title, Author, Tags...') + self.filterEdit = QtWidgets.QLineEdit() + self.filterEdit.setPlaceholderText('Search for Title, Author, Tags...') sizePolicy = QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed) - filterEdit.setSizePolicy(sizePolicy) - filterEdit.setContentsMargins(200, 0, 200, 0) - filterEdit.setMinimumWidth(150) - filterEdit.textChanged.connect(self.parent_window.reload_listview) + self.filterEdit.setSizePolicy(sizePolicy) + self.filterEdit.setContentsMargins(200, 0, 200, 0) + self.filterEdit.setMinimumWidth(150) + self.filterEdit.setObjectName('filterEdit') + self.filterEdit.textChanged.connect(self.parent.reload_listview) # Sorter sorting_choices = ['Title', 'Author', 'Year'] - sortingBox = QtWidgets.QComboBox() - sortingBox.addItems(sorting_choices) - sortingBox.setObjectName('sortingBox') - sortingBox.setToolTip('Sort by') - sortingBox.activated.connect(self.parent_window.reload_listview) + self.sortingBox = QtWidgets.QComboBox() + self.sortingBox.addItems(sorting_choices) + self.sortingBox.setObjectName('sortingBox') + self.sortingBox.setToolTip('Sort by') + self.sortingBox.activated.connect(self.parent.reload_listview) # Add widgets to toolbar - self.parent_window.LibraryToolBar.addAction(addButton) - self.parent_window.LibraryToolBar.addAction(deleteButton) - self.parent_window.LibraryToolBar.addSeparator() - self.parent_window.LibraryToolBar.addAction(settingsButton) - self.parent_window.LibraryToolBar.addWidget(spacer) - self.parent_window.LibraryToolBar.addWidget(filterEdit) - self.parent_window.LibraryToolBar.addWidget(spacer) - self.parent_window.LibraryToolBar.addWidget(sortingBox) + self.addAction(addButton) + self.addAction(deleteButton) + self.addSeparator() + self.addAction(settingsButton) + self.addWidget(self.filterEdit) + self.addWidget(self.sortingBox) class Tabs: diff --git a/database.py b/database.py index b4c1247..b1f416f 100644 --- a/database.py +++ b/database.py @@ -11,8 +11,6 @@ class DatabaseInit: if not os.path.exists(database_path): self.database = sqlite3.connect(database_path) self.create_database() - else: - self.database = sqlite3.connect(database_path) def create_database(self): self.database.execute( @@ -26,7 +24,7 @@ class DatabaseInit: # database at time of closing self.database.commit() - + self.database.close() class DatabaseFunctions: def __init__(self, location_prefix): diff --git a/mainwindow.py b/mainwindow.py index 6bf1ca6..6478488 100644 --- a/mainwindow.py +++ b/mainwindow.py @@ -45,17 +45,6 @@ class Ui_MainWindow(object): self.horizontalLayout.addWidget(self.tabWidget) self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1) MainWindow.setCentralWidget(self.centralwidget) - self.LibraryToolBar = QtWidgets.QToolBar(MainWindow) - self.LibraryToolBar.setMovable(False) - self.LibraryToolBar.setIconSize(QtCore.QSize(22, 22)) - self.LibraryToolBar.setFloatable(False) - self.LibraryToolBar.setObjectName("LibraryToolBar") - MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.LibraryToolBar) - self.BookToolBar = QtWidgets.QToolBar(MainWindow) - self.BookToolBar.setMovable(False) - self.BookToolBar.setFloatable(False) - self.BookToolBar.setObjectName("BookToolBar") - MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.BookToolBar) self.statusBar = QtWidgets.QStatusBar(MainWindow) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) @@ -74,6 +63,4 @@ class Ui_MainWindow(object): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "Lector")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Library")) - self.LibraryToolBar.setWindowTitle(_translate("MainWindow", "toolBar")) - self.BookToolBar.setWindowTitle(_translate("MainWindow", "toolBar_2")) diff --git a/resources/main.ui b/resources/main.ui index 914c33b..8996053 100644 --- a/resources/main.ui +++ b/resources/main.ui @@ -79,46 +79,6 @@ - - - toolBar - - - false - - - - 22 - 22 - - - - false - - - TopToolBarArea - - - false - - - - - toolBar_2 - - - false - - - false - - - TopToolBarArea - - - false - -