Refactor toolbars
This commit is contained in:
122
__main__.py
122
__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:
|
||||
|
@@ -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):
|
||||
|
@@ -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"))
|
||||
|
||||
|
@@ -79,46 +79,6 @@
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QToolBar" name="LibraryToolBar">
|
||||
<property name="windowTitle">
|
||||
<string>toolBar</string>
|
||||
</property>
|
||||
<property name="movable">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>22</width>
|
||||
<height>22</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="floatable">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<attribute name="toolBarArea">
|
||||
<enum>TopToolBarArea</enum>
|
||||
</attribute>
|
||||
<attribute name="toolBarBreak">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
</widget>
|
||||
<widget class="QToolBar" name="BookToolBar">
|
||||
<property name="windowTitle">
|
||||
<string>toolBar_2</string>
|
||||
</property>
|
||||
<property name="movable">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="floatable">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<attribute name="toolBarArea">
|
||||
<enum>TopToolBarArea</enum>
|
||||
</attribute>
|
||||
<attribute name="toolBarBreak">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
</widget>
|
||||
<widget class="QStatusBar" name="statusBar">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
|
Reference in New Issue
Block a user