Shift subclassed widgets to separate module

This commit is contained in:
BasioMeusPuga
2017-11-09 09:02:38 +05:30
parent ba04f9062c
commit 32c1734c31
2 changed files with 134 additions and 130 deletions

View File

@@ -36,6 +36,8 @@ import mainwindow
import database
import book_parser
from widgets import *
class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
def __init__(self):
@@ -369,136 +371,6 @@ class Settings:
self.settings.endGroup()
class BookToolBar(QtWidgets.QToolBar):
def __init__(self, parent=None):
super(BookToolBar, self).__init__(parent)
self.setMovable(False)
self.setIconSize(QtCore.QSize(22, 22))
self.setFloatable(False)
self.setObjectName("LibraryToolBar")
# Buttons
self.fullscreenButton = QtWidgets.QAction(
QtGui.QIcon.fromTheme('view-fullscreen'), 'Fullscreen', self)
self.fontButton = QtWidgets.QAction(
QtGui.QIcon.fromTheme('gtk-select-font'), 'Format view', self)
self.settingsButton = QtWidgets.QAction(
QtGui.QIcon.fromTheme('settings'), 'Settings', self)
# Add buttons
self.addAction(self.fontButton)
self.addAction(self.fullscreenButton)
self.addSeparator()
self.addAction(self.settingsButton)
# Widget arrangement
spacer = QtWidgets.QWidget()
spacer.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy = QtWidgets.QSizePolicy(
QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
self.searchBar = QtWidgets.QLineEdit()
self.searchBar.setPlaceholderText('Search...')
self.searchBar.setSizePolicy(sizePolicy)
self.searchBar.setContentsMargins(10, 0, 0, 0)
self.searchBar.setMinimumWidth(150)
self.searchBar.setObjectName('searchBar')
# Sorter
sorting_choices = ['Chapter ' + str(i) for i in range(1, 11)]
self.tocBox = QtWidgets.QComboBox()
self.tocBox.addItems(sorting_choices)
self.tocBox.setObjectName('sortingBox')
self.tocBox.setSizePolicy(sizePolicy)
self.tocBox.setMinimumContentsLength(10)
self.tocBox.setToolTip('Table of Contents')
# Add widgets
self.addWidget(spacer)
self.addWidget(self.tocBox)
self.addWidget(self.searchBar)
class LibraryToolBar(QtWidgets.QToolBar):
def __init__(self, parent=None):
super(LibraryToolBar, self).__init__(parent)
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")
# Buttons
self.addButton = QtWidgets.QAction(
QtGui.QIcon.fromTheme('add'), 'Add book', self)
self.deleteButton = QtWidgets.QAction(
QtGui.QIcon.fromTheme('remove'), 'Delete book', self)
self.settingsButton = QtWidgets.QAction(
QtGui.QIcon.fromTheme('settings'), 'Settings', self)
# Add buttons
self.addAction(self.addButton)
self.addAction(self.deleteButton)
self.addSeparator()
self.addAction(self.settingsButton)
# Filter
sizePolicy = QtWidgets.QSizePolicy(
QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
self.filterEdit = QtWidgets.QLineEdit()
self.filterEdit.setPlaceholderText(
'Search for Title, Author, Tags...')
self.filterEdit.setSizePolicy(sizePolicy)
self.filterEdit.setContentsMargins(10, 0, 0, 0)
self.filterEdit.setMinimumWidth(150)
self.filterEdit.setObjectName('filterEdit')
# Sorter
sorting_choices = ['Title', 'Author', 'Year']
self.sortingBox = QtWidgets.QComboBox()
self.sortingBox.addItems(sorting_choices)
self.sortingBox.setObjectName('sortingBox')
self.sortingBox.setSizePolicy(sizePolicy)
# self.sortingBox.setContentsMargins(30, 0, 0, 0)
self.sortingBox.setMinimumContentsLength(10)
self.sortingBox.setToolTip('Sort by')
# Add widgets
self.addWidget(spacer)
self.addWidget(self.sortingBox)
self.addWidget(self.filterEdit)
class Tab(QtWidgets.QWidget):
def __init__(self, book_metadata, parent=None):
# TODO
# The display widget will probably have to be shifted to something else
# A horizontal slider to control flow
# Keyboard shortcuts
super(Tab, self).__init__(parent)
self.parent = parent
self.book_metadata = book_metadata # Save progress data into this dictionary
book_title = self.book_metadata['book_title']
book_path = self.book_metadata['book_path']
self.gridLayout = QtWidgets.QGridLayout(self)
self.gridLayout.setObjectName("gridLayout")
self.textEdit = QtWidgets.QTextEdit(self)
self.textEdit.setObjectName("textEdit")
self.textEdit.setFrameShape(QtWidgets.QFrame.NoFrame)
self.gridLayout.addWidget(self.textEdit, 0, 0, 1, 1)
self.parent.addTab(self, book_title)
self.textEdit.setText(book_path)
def main():
app = QtWidgets.QApplication(sys.argv)
app.setApplicationName('Lector') # This is needed for QStandardPaths

132
widgets.py Normal file
View File

@@ -0,0 +1,132 @@
#!usr/bin/env python3
from PyQt5 import QtWidgets, QtGui, QtCore
class BookToolBar(QtWidgets.QToolBar):
def __init__(self, parent=None):
super(BookToolBar, self).__init__(parent)
self.setMovable(False)
self.setIconSize(QtCore.QSize(22, 22))
self.setFloatable(False)
self.setObjectName("LibraryToolBar")
# Buttons
self.fullscreenButton = QtWidgets.QAction(
QtGui.QIcon.fromTheme('view-fullscreen'), 'Fullscreen', self)
self.fontButton = QtWidgets.QAction(
QtGui.QIcon.fromTheme('gtk-select-font'), 'Format view', self)
self.settingsButton = QtWidgets.QAction(
QtGui.QIcon.fromTheme('settings'), 'Settings', self)
# Add buttons
self.addAction(self.fontButton)
self.addAction(self.fullscreenButton)
self.addSeparator()
self.addAction(self.settingsButton)
# Widget arrangement
spacer = QtWidgets.QWidget()
spacer.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy = QtWidgets.QSizePolicy(
QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
self.searchBar = QtWidgets.QLineEdit()
self.searchBar.setPlaceholderText('Search...')
self.searchBar.setSizePolicy(sizePolicy)
self.searchBar.setContentsMargins(10, 0, 0, 0)
self.searchBar.setMinimumWidth(150)
self.searchBar.setObjectName('searchBar')
# Sorter
sorting_choices = ['Chapter ' + str(i) for i in range(1, 11)]
self.tocBox = QtWidgets.QComboBox()
self.tocBox.addItems(sorting_choices)
self.tocBox.setObjectName('sortingBox')
self.tocBox.setSizePolicy(sizePolicy)
self.tocBox.setMinimumContentsLength(10)
self.tocBox.setToolTip('Table of Contents')
# Add widgets
self.addWidget(spacer)
self.addWidget(self.tocBox)
self.addWidget(self.searchBar)
class LibraryToolBar(QtWidgets.QToolBar):
def __init__(self, parent=None):
super(LibraryToolBar, self).__init__(parent)
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")
# Buttons
self.addButton = QtWidgets.QAction(
QtGui.QIcon.fromTheme('add'), 'Add book', self)
self.deleteButton = QtWidgets.QAction(
QtGui.QIcon.fromTheme('remove'), 'Delete book', self)
self.settingsButton = QtWidgets.QAction(
QtGui.QIcon.fromTheme('settings'), 'Settings', self)
# Add buttons
self.addAction(self.addButton)
self.addAction(self.deleteButton)
self.addSeparator()
self.addAction(self.settingsButton)
# Filter
sizePolicy = QtWidgets.QSizePolicy(
QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
self.filterEdit = QtWidgets.QLineEdit()
self.filterEdit.setPlaceholderText(
'Search for Title, Author, Tags...')
self.filterEdit.setSizePolicy(sizePolicy)
self.filterEdit.setContentsMargins(10, 0, 0, 0)
self.filterEdit.setMinimumWidth(150)
self.filterEdit.setObjectName('filterEdit')
# Sorter
sorting_choices = ['Title', 'Author', 'Year']
self.sortingBox = QtWidgets.QComboBox()
self.sortingBox.addItems(sorting_choices)
self.sortingBox.setObjectName('sortingBox')
self.sortingBox.setSizePolicy(sizePolicy)
# self.sortingBox.setContentsMargins(30, 0, 0, 0)
self.sortingBox.setMinimumContentsLength(10)
self.sortingBox.setToolTip('Sort by')
# Add widgets
self.addWidget(spacer)
self.addWidget(self.sortingBox)
self.addWidget(self.filterEdit)
class Tab(QtWidgets.QWidget):
def __init__(self, book_metadata, parent=None):
# TODO
# The display widget will probably have to be shifted to something else
# A horizontal slider to control flow
# Keyboard shortcuts
super(Tab, self).__init__(parent)
self.parent = parent
self.book_metadata = book_metadata # Save progress data into this dictionary
book_title = self.book_metadata['book_title']
book_path = self.book_metadata['book_path']
self.gridLayout = QtWidgets.QGridLayout(self)
self.gridLayout.setObjectName("gridLayout")
self.textEdit = QtWidgets.QTextEdit(self)
self.textEdit.setObjectName("textEdit")
self.textEdit.setFrameShape(QtWidgets.QFrame.NoFrame)
self.gridLayout.addWidget(self.textEdit, 0, 0, 1, 1)
self.parent.addTab(self, book_title)
self.textEdit.setText(book_path)