Example #1
0
class MainWindow(QMainWindow):
		"""docstring for MainWindowQMainWindow"""
		def __init__(self):
				super( ).__init__()

				self.setWindowTitle("C3 Media Database Management Systems")

				self.availableGraphics = [':Logo.png', ':splash.png', ':home-icon.png',':items-icon.png',':customers-icon.png',':loan-icon.png',':test-icon.png',':logout-icon.png',':quit-icon.png', ':password-icon.png']

				self.icon = QIcon(QPixmap(self.availableGraphics[0]))
				self.setWindowIcon(self.icon)

				self.setFixedSize(1200,680)

				#Connection Attribute stores the database connection
				self.connection = None
				self.access = False

				#stacked layout
				self.stackedLayout = QStackedLayout()

				#Main Widget
				self.widget = QWidget()
				self.widget.setLayout(self.stackedLayout)

				#set central widget to the stacked layout
				self.setCentralWidget(self.widget)

				#add menubar, status and toolbars
				self.settings()
				self.createActionShortcuts()

				#generate widgets
				self.initialCentralWidget()
				self.loggedInWidget()
				self.CreateNewItemWidget()
				self.CreateNewCustomerWidget()
				self.CreateNewLoanWidget()
				self.CreateNewPatTestWidget()
				self.CreateManageItemsWidget()
				self.CreateManageCustomersWidget()
				self.CreateManageLoansLayout()
				self.CreateManagePatTestsLayout()

				#disable actions
				self.DisableActions()

				#set Qt action signals, connections and shortcuts
				self.connections()
				self.createActionShortcuts()

				self.setStyleSheet(maincss)




		def addConnectionsToWidgets(self):
				self.newItem.addConnection(self.connection)
				self.newCustomer.addConnection(self.connection)
				self.newLoan.addConnection(self.connection)
				self.newPatTest.addConnection(self.connection)

				self.manageItems.addConnection(self.connection)
				self.manageCustomers.addConnection(self.connection)
				self.manageLoans.addConnection(self.connection)
				self.managePatTests.addConnection(self.connection)

		def settings(self):
				#file actions
				self.open = QAction("Open Database", self)
				self.closeDatabaseAction = QAction("Close Database", self)
				self.new = QAction("New", self)
				self.Print = QAction("Export", self)
				self.ChangePasswordAction = QAction("Change Password", self)
				self.logoutAction = QAction("Logout", self)
				self.closeWindowAction = QAction("Close Window", self)

				#edit actions
				self.cut = QAction("Cut", self)
				self.copy = QAction("Copy", self)
				self.paste = QAction("Paste...", self)
				self.selectAll = QAction("Select All", self)


				#item actions
				self.addItemAction = QAction('Add Item', self)
				self.manageItemsAction = QAction('Manage Items', self)

				#customer actions
				self.addCustomerAction = QAction('Add Customer', self)
				self.manageCustomersAction = QAction('Manage Customers', self)

				#loan actions
				self.addLoanAction = QAction('Add Loan', self)
				self.manageLoansAction = QAction('Manage Loans', self)

				#pat_test actions
				self.addPatTestAction = QAction('Add Pat Test', self)
				self.managePatTestsAction = QAction('Manage Pat Tests', self)

				#Minimize window actions
				self.homeAction = QAction('Home', self)
				self.minimizeAction = QAction("Minimize", self)


				#help action
				self.help = QAction('Help', self)
				self.about = QAction('About', self)


				#menubar
				self.menubar = QMenuBar()

				#add file menu and add actions to file menu
				self.fileMenu = self.menubar.addMenu("File")
				self.fileMenu.addAction(self.open)
				self.fileMenu.addAction(self.new)
				self.fileMenu.addAction(self.Print)
				self.fileMenu.addSeparator()
				self.fileMenu.addAction(self.ChangePasswordAction)
				self.fileMenu.addAction(self.logoutAction)
				self.fileMenu.addSeparator()
				self.fileMenu.addAction(self.closeWindowAction)


				#add edit menu and add actions to edit menu
				self.editMenu = self.menubar.addMenu("Edit")
				self.editMenu.addAction(self.cut)
				self.editMenu.addAction(self.copy)
				self.editMenu.addAction(self.paste)
				self.editMenu.addAction(self.selectAll)
				self.editMenu.addSeparator()


				#item menu
				self.itemMenu = self.menubar.addMenu("Item")
				self.itemMenu.addAction(self.addItemAction)
				self.itemMenu.addAction(self.manageItemsAction)

				#customer menu
				self.customerMenu = self.menubar.addMenu("Customer")
				self.customerMenu.addAction(self.addCustomerAction)
				self.customerMenu.addAction(self.manageCustomersAction)

				#loan menu
				self.loanMenu = self.menubar.addMenu("Loan")
				self.loanMenu.addAction(self.addLoanAction)
				self.loanMenu.addAction(self.manageLoansAction)


				#pat test menu
				self.patTestMenu = self.menubar.addMenu("Pat Test")
				self.patTestMenu.addAction(self.addPatTestAction)
				self.patTestMenu.addAction(self.managePatTestsAction)

				#window menu
				self.windowMenu = self.menubar.addMenu("Window")
				self.windowMenu.addAction(self.homeAction)
				self.windowMenu.addAction(self.minimizeAction)

				#help menu
				self.helpMenu = self.menubar.addMenu("Help")
				self.helpMenu.addAction(self.help)
				self.helpMenu.addAction(self.about)

				#create menubar
				self.setMenuBar(self.menubar)

				#================== ToolBar ===================#

				#================== Widgets ===================#



				#home widgets
				self.homeTitle = QToolButton()
				self.homeTitle.setText('   Home')
				self.homeTitle.setIcon(QIcon(self.availableGraphics[2]))
				self.homeTitle.setIconSize(QSize(30,30))
				self.homeTitle.setToolButtonStyle(2)
				self.homeTitle.setObjectName('homeButton')
				self.homeTitle.setProperty("buttonClass","leftToolBar")
				self.homeTitle.setCursor(QCursor(Qt.PointingHandCursor))

				#home widgets
				self.logoutButton = QToolButton()
				self.logoutButton.setText('   Logout')
				self.logoutButton.setIcon(QIcon(self.availableGraphics[7]))
				self.logoutButton.setIconSize(QSize(30,30))
				self.logoutButton.setToolButtonStyle(2)
				self.logoutButton.setProperty("buttonClass","leftToolBar")
				self.logoutButton.setCursor(QCursor(Qt.PointingHandCursor))

				#home widgets
				self.changePasswordButton = QToolButton()
				self.changePasswordButton.setText('   Change Password')
				self.changePasswordButton.setIcon(QIcon(self.availableGraphics[9]))
				self.changePasswordButton.setIconSize(QSize(30,30))
				self.changePasswordButton.setToolButtonStyle(2)
				self.changePasswordButton.setProperty("buttonClass","leftToolBar")
				self.changePasswordButton.setCursor(QCursor(Qt.PointingHandCursor))

				#home widgets
				self.quitButton = QToolButton()
				self.quitButton.setText('   Quit Application')
				self.quitButton.setIcon(QIcon(self.availableGraphics[8]))
				self.quitButton.setIconSize(QSize(30,30))
				self.quitButton.setToolButtonStyle(2)
				self.quitButton.setProperty("buttonClass","leftToolBar")
				self.quitButton.setCursor(QCursor(Qt.PointingHandCursor))

				#item widgets
				self.addItemButton = QToolButton()
				self.addItemButton.setText('   Add Item')
				self.addItemButton.setIcon(QIcon(self.availableGraphics[3]))
				self.addItemButton.setIconSize(QSize(30,30))
				self.addItemButton.setToolButtonStyle(2)
				self.addItemButton.setObjectName('addItem')
				self.addItemButton.setProperty("buttonClass","leftToolBar")
				self.addItemButton.setCursor(QCursor(Qt.PointingHandCursor))

				self.manageItemsButton = QToolButton()
				self.manageItemsButton.setText('   Manage Items')
				self.manageItemsButton.setIcon(QIcon(self.availableGraphics[3]))
				self.manageItemsButton.setIconSize(QSize(30,30))
				self.manageItemsButton.setToolButtonStyle(2)
				self.manageItemsButton.setObjectName('manageItem')
				self.manageItemsButton.setProperty("buttonClass","leftToolBar")
				self.manageItemsButton.setCursor(QCursor(Qt.PointingHandCursor))

				#customer widgets
				self.addCustomerButton = QToolButton()
				self.addCustomerButton.setText('   Add Customer')
				self.addCustomerButton.setIcon(QIcon(self.availableGraphics[4]))
				self.addCustomerButton.setIconSize(QSize(30,30))
				self.addCustomerButton.setToolButtonStyle(2)
				self.addCustomerButton.setObjectName('addCust')
				self.addCustomerButton.setProperty("buttonClass","leftToolBar")
				self.addCustomerButton.setCursor(QCursor(Qt.PointingHandCursor))

				self.manageCustomersButton = QToolButton()
				self.manageCustomersButton.setText('   Manage Customers')
				self.manageCustomersButton.setIcon(QIcon(self.availableGraphics[4]))
				self.manageCustomersButton.setIconSize(QSize(30,30))
				self.manageCustomersButton.setToolButtonStyle(2)
				self.manageCustomersButton.setObjectName('manageCust')
				self.manageCustomersButton.setProperty("buttonClass","leftToolBar")
				self.manageCustomersButton.setCursor(QCursor(Qt.PointingHandCursor))

				#loan widgets
				self.addLoanButton = QToolButton()
				self.addLoanButton.setText('   Add Loan')
				self.addLoanButton.setIcon(QIcon(self.availableGraphics[5]))
				self.addLoanButton.setIconSize(QSize(30,30))
				self.addLoanButton.setToolButtonStyle(2)
				self.addLoanButton.setObjectName('addLoan')
				self.addLoanButton.setProperty("buttonClass","leftToolBar")
				self.addLoanButton.setCursor(QCursor(Qt.PointingHandCursor))

				self.manageLoansButton = QToolButton()
				self.manageLoansButton.setText('   Manage Loans')
				self.manageLoansButton.setIcon(QIcon(self.availableGraphics[5]))
				self.manageLoansButton.setIconSize(QSize(30,30))
				self.manageLoansButton.setToolButtonStyle(2)
				self.manageLoansButton.setObjectName('manageLoan')
				self.manageLoansButton.setProperty("buttonClass","leftToolBar")
				self.manageLoansButton.setCursor(QCursor(Qt.PointingHandCursor))

				#test widgets
				self.addPatTestButton = QToolButton()
				self.addPatTestButton.setText('   Add Pat-Test')
				self.addPatTestButton.setIcon(QIcon(self.availableGraphics[6]))
				self.addPatTestButton.setIconSize(QSize(30,30))
				self.addPatTestButton.setToolButtonStyle(2)
				self.addPatTestButton.setObjectName('addTest')
				self.addPatTestButton.setProperty("buttonClass","leftToolBar")
				self.addPatTestButton.setCursor(QCursor(Qt.PointingHandCursor))

				self.managePatTestsButton = QToolButton()
				self.managePatTestsButton.setText('   Manage Pat-Tests')
				self.managePatTestsButton.setIcon(QIcon(self.availableGraphics[6]))
				self.managePatTestsButton.setIconSize(QSize(30,30))
				self.managePatTestsButton.setToolButtonStyle(2)
				self.managePatTestsButton.setObjectName('manageTest')
				self.managePatTestsButton.setProperty("buttonClass","leftToolBar")
				self.managePatTestsButton.setCursor(QCursor(Qt.PointingHandCursor))



				#tool bar
				self.leftToolBar = QToolBar()
				self.leftToolBar.setObjectName('left')
				self.leftToolBar.setMovable(False)
				self.addToolBar(Qt.LeftToolBarArea, self.leftToolBar)

				self.spacerWidget = QWidget()
				self.spacerWidget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)

				self.leftToolBar.addWidget(self.homeTitle)

				self.leftToolBar.addWidget(self.addItemButton)
				self.leftToolBar.addWidget(self.manageItemsButton)

				self.leftToolBar.addWidget(self.addCustomerButton)
				self.leftToolBar.addWidget(self.manageCustomersButton)

				self.leftToolBar.addWidget(self.addLoanButton)
				self.leftToolBar.addWidget(self.manageLoansButton)

				self.leftToolBar.addWidget(self.addPatTestButton)
				self.leftToolBar.addWidget(self.managePatTestsButton)


				self.leftToolBar.addWidget(self.spacerWidget)

				self.leftToolBar.addWidget(self.logoutButton)
				self.leftToolBar.addWidget(self.changePasswordButton)
				self.leftToolBar.addWidget(self.quitButton)


				self.statusBar = QStatusBar()

				self.setStatusBar(self.statusBar)

		def collapseApp(self):
			self.showMinimized()


		def createActionShortcuts(self):
				#file menu shortcuts
				self.open.setShortcut('Ctrl+O')
				self.new.setShortcut('Ctrl+N')
				self.Print.setShortcut('Ctrl+P')
				self.logoutAction.setShortcut('Ctrl+Shift+L')
				self.closeWindowAction.setShortcut('Ctrl+W')

				#edit menu shortcuts
				self.cut.setShortcut('Ctrl+X')
				self.copy.setShortcut('Ctrl+C')
				self.paste.setShortcut('Ctrl+V')
				self.selectAll.setShortcut('Ctrl+A')

				#window shortcuts
				self.homeAction.setShortcut('Ctrl+Shift+H')
				self.minimizeAction.setShortcut('Ctrl+M')

		def connections(self):
				#menubar connections
				self.open.triggered.connect(self.openDatabase)
				self.new.triggered.connect(self.SelectNewRecordTableDialog)
				self.ChangePasswordAction.triggered.connect(self.changePasswordDialog)
				self.closeWindowAction.triggered.connect(self.close)
				self.minimizeAction.triggered.connect(self.collapseApp)
				self.homeAction.triggered.connect(self.switchToMainMenu)

				#toolbar actions
				self.homeTitle.clicked.connect(self.switchToMainMenu)
				self.addItemButton.clicked.connect(self.switchToNewItem)
				self.addCustomerButton.clicked.connect(self.switchToNewCustomer)
				self.addLoanButton.clicked.connect(self.switchToNewLoan)
				self.addPatTestButton.clicked.connect(self.switchToNewPatTest)

				self.manageItemsButton.clicked.connect(self.switchToManageItems)
				self.manageCustomersButton.clicked.connect(self.switchToManageCustomers)
				self.manageLoansButton.clicked.connect(self.switchToManageLoans)
				self.managePatTestsButton.clicked.connect(self.switchToManagePatTests)

				self.logoutButton.clicked.connect(self.closeDatabase)
				self.changePasswordButton.clicked.connect(self.changePasswordDialog)
				self.quitButton.clicked.connect(self.close)

				#button connections
				self.openDatabaseButton.clicked.connect(self.openDatabase)
				self.closeAppButton.clicked.connect(self.close)

				self.newItem.cancelButton.clicked.connect(self.switchToMainMenu)
				self.newCustomer.cancelButton.clicked.connect(self.switchToMainMenu)
				self.newLoan.cancelButton.clicked.connect(self.switchToMainMenu)
				self.newPatTest.cancelButton.clicked.connect(self.switchToMainMenu)

				#login connections
				self.logoutAction.triggered.connect(self.closeDatabase)

		def DisableActions(self):
				#file actions
				self.open.setEnabled(True)
				self.new.setEnabled(False)
				self.Print.setEnabled(False)
				self.ChangePasswordAction.setEnabled(False)
				self.logoutAction.setEnabled(False)

				#edit actions
				self.cut.setEnabled(False)
				self.copy.setEnabled(False)
				self.paste.setEnabled(False)
				self.selectAll.setEnabled(False)

				#item actions
				self.addItemAction.setEnabled(False)
				self.manageItemsAction.setEnabled(False)

				#customer actions
				self.addCustomerAction.setEnabled(False)
				self.manageCustomersAction.setEnabled(False)

				#loan actions
				self.addLoanAction.setEnabled(False)
				self.manageLoansAction.setEnabled(False)

				#pat_test actions
				self.addPatTestAction.setEnabled(False)
				self.managePatTestsAction.setEnabled(False)

				#window actions
				self.homeAction.setEnabled(True)

				#help actions
				self.help.setEnabled(False)
				self.about.setEnabled(True)

				#database actions
				self.open.setEnabled(True)
				self.closeDatabaseAction.setEnabled(False)

				#ToolBar Acions
				self.homeTitle.setEnabled(False)

				self.addItemButton.setEnabled(False)
				self.manageItemsButton.setEnabled(False)

				self.addCustomerButton.setEnabled(False)
				self.manageCustomersButton.setEnabled(False)

				self.addLoanButton.setEnabled(False)
				self.manageLoansButton.setEnabled(False)

				self.addPatTestButton.setEnabled(False)
				self.managePatTestsButton.setEnabled(False)

				self.logoutButton.setEnabled(False)
				self.changePasswordButton.setEnabled(False)
				self.quitButton.setEnabled(True)


		def enableActions(self):
				#file actions
				self.open.setEnabled(True)
				self.new.setEnabled(True)
				self.ChangePasswordAction.setEnabled(True)
				self.logoutAction.setEnabled(True)

				#edit actions
				self.cut.setEnabled(True)
				self.copy.setEnabled(True)
				self.paste.setEnabled(True)
				self.selectAll.setEnabled(True)

				#item actions
				self.addItemAction.setEnabled(True)
				self.manageItemsAction.setEnabled(True)

				#customer actions
				self.addCustomerAction.setEnabled(True)
				self.manageCustomersAction.setEnabled(True)

				#loan actions
				self.addLoanAction.setEnabled(True)
				self.manageLoansAction.setEnabled(True)

				#pat_test actions
				self.addPatTestAction.setEnabled(True)
				self.managePatTestsAction.setEnabled(True)

				#window actions
				self.homeAction.setEnabled(True)

				#help actions
				self.help.setEnabled(True)
				self.about.setEnabled(True)


				#database actions
				self.open.setEnabled(False)
				self.closeDatabaseAction.setEnabled(True)

				#add connection to widgets
				self.addConnectionsToWidgets()

				#toolbar actions
				self.homeTitle.setEnabled(True)

				self.addItemButton.setEnabled(True)
				self.manageItemsButton.setEnabled(True)

				self.addCustomerButton.setEnabled(True)
				self.manageCustomersButton.setEnabled(True)

				self.addLoanButton.setEnabled(True)
				self.manageLoansButton.setEnabled(True)

				self.addPatTestButton.setEnabled(True)
				self.managePatTestsButton.setEnabled(True)

				self.logoutButton.setEnabled(True)
				self.changePasswordButton.setEnabled(True)
				self.quitButton.setEnabled(True)


		def openDatabase(self):
				if self.connection:
						self.closeDatabase()

				path = "C3_media_database.db"
				self.connection = SQLConnection(path)
				opened = self.connection.openDatabase()

				if opened:
						self.password = self.connection.getPassword()
						self.databaseLogin()
						self.connection.referentialIntegrity()
						self.statusBar.showMessage("Connected to Database: {0}".format(path))
						time.sleep(2)
						self.statusBar.showMessage("")

		def closeDatabase(self):
				if self.connection:
						closed = self.connection.closeDatabase()

						if closed:
								self.statusBar.showMessage("Database has been closed.")
								self.DisableActions()
								self.stackedLayout.setCurrentIndex(0)
								self.access = False
						else:
								self.statusBar.showMessage("An error occured!")
				else:
						self.statusBar.showMessage("No Database to close.")

		def SelectNewRecordTableDialog(self):
				self.selectTableDialogBox = RadioButtonWidget("Please Select a Table", ("Item", "Customer", "Loan", "PAT-Test"), self)
				self.selectTableDialogBox.exec_()



		def initialCentralWidget(self):
				self.openDatabaseButton = QPushButton("Open Database")
				self.openDatabaseButton.setMaximumWidth(200)
				self.openDatabaseButton.setProperty("buttonClass","home")
				self.openDatabaseButton.setCursor(QCursor(Qt.PointingHandCursor))

				self.closeAppButton = QPushButton("Close Application")
				self.closeAppButton.setMaximumWidth(200)
				self.closeAppButton.setProperty("buttonClass","home")
				self.closeAppButton.setCursor(QCursor(Qt.PointingHandCursor))

				self.databaseLayout = QVBoxLayout()

				self.databaseLayout.addWidget(self.openDatabaseButton,Qt.AlignCenter)
				self.databaseLayout.addWidget(self.closeAppButton,Qt.AlignCenter)
				self.databaseLayout.setAlignment(Qt.AlignHCenter)

				self.databaseWidget = QWidget()

				self.databaseWidget.setLayout(self.databaseLayout)

				self.stackedLayout.addWidget(self.databaseWidget)

		def loggedInWidget(self):
				self.mainMenu = MainMenuWidget(self)
				self.mainMenu.setLayout(self.mainMenu.mainLayout)
				self.stackedLayout.addWidget(self.mainMenu)

		def switchToMainMenu(self):
				self.stackedLayout.setCurrentIndex(1)
				self.setStyleSheet(atMain)

		def switchToNewItem(self):
				if hasattr(self, 'newItem'):
						self.newItem.clearForm()
				self.stackedLayout.setCurrentIndex(2)
				self.setStyleSheet(addItemPressed)


		def switchToNewCustomer(self):
				if hasattr(self, 'newCustomer'):
						self.newCustomer.clearForm()
				self.stackedLayout.setCurrentIndex(3)
				self.setStyleSheet(addCustomerPressed)

		def switchToNewLoan(self):
				if hasattr(self, 'newLoan'):
						self.newLoan.clearForm()
				self.stackedLayout.setCurrentIndex(4)
				self.setStyleSheet(addLoanPressed)

		def switchToNewPatTest(self):
				if hasattr(self, 'newPatTest'):
						self.newPatTest.clearForm()
				self.stackedLayout.setCurrentIndex(5)
				self.setStyleSheet(addTestPressed)

		def switchToManageItems(self):
				if hasattr(self, 'manageItems'):
					self.manageItems.clearForm()
				self.stackedLayout.setCurrentIndex(6)
				self.setStyleSheet(manageItemPressed)

		def switchToManageCustomers(self):
				if hasattr(self, 'manageCustomers'):
					self.manageCustomers.clearForm()
				self.stackedLayout.setCurrentIndex(7)
				self.setStyleSheet(manageCustomerPressed)

		def switchToManageLoans(self):
				if hasattr(self, 'manageLoans'):
						self.manageLoans.showAllLoansInTable()
						self.manageLoans.leftWidget.setEnabled(True)
						self.manageLoans.rightWidget.setEnabled(False)
				self.stackedLayout.setCurrentIndex(8)
				self.setStyleSheet(manageLoanPressed)

		def switchToManagePatTests(self):
			if hasattr(self, 'managePatTests'):
				self.managePatTests.showAllPatTestsInTable()
				self.managePatTests.showAllItemsInTable()
			self.stackedLayout.setCurrentIndex(9)
			self.setStyleSheet(manageTestPressed)

		def CreateNewItemWidget(self):
				self.newItem =  NewItemWidget(self)
				self.stackedLayout.addWidget(self.newItem)

		def CreateNewCustomerWidget(self):
				self.newCustomer = NewCustomerWidget(self)
				self.stackedLayout.addWidget(self.newCustomer)

		def CreateNewLoanWidget(self):
				self.newLoan = NewLoanWidget(self)
				self.stackedLayout.addWidget(self.newLoan)

		def CreateNewPatTestWidget(self):
				self.newPatTest = NewPatTestWidget(self)
				self.stackedLayout.addWidget(self.newPatTest)

		def CreateManageItemsWidget(self):
				self.manageItems = ManageItemsWidget(self)
				self.stackedLayout.addWidget(self.manageItems)

		def CreateManageCustomersWidget(self):
				self.manageCustomers = ManageCustomersWidget(self)
				self.stackedLayout.addWidget(self.manageCustomers)

		def CreateManageLoansLayout(self):
				self.manageLoans = ManageLoansWidget(self)
				self.stackedLayout.addWidget(self.manageLoans)

		def CreateManagePatTestsLayout(self):
				self.managePatTests = ManagePatTestsWidget(self)
				self.stackedLayout.addWidget(self.managePatTests)

		def showAboutMessageBox(self):

				aboutText = """This application was built by Joel Butcher using Python3, PyQt4 and uses Sqlite3. \n
								It is design for use by the media department of Cambridge Community Church \n
								to enable the organisation of the equipment owned by the department """

				QMessageBox.about(self, "About", aboutText)

		def createLoginDialog(self):
				self.loginDialog = LoginDialog(self)
				self.loginDialog.exec_()

		def changePasswordDialog(self):
				self.changePasswordWindow = ChangePasswordDialog(self,self.password)
				self.changePasswordWindow.addConnection(self.connection)
				self.changePasswordWindow.exec_()

		def databaseLogin(self):
				self.createLoginDialog()
				password = self.loginDialog.password_entry.text()
				if password == self.password:
						self.access = True
						self.enableActions()
						self.switchToMainMenu()
				else:
						self.login_error_dialog = LoginErrorDialog()
						self.login_error_dialog.exec_()
						self.access = False

		def closeEvent(self, event):
				self.stackedLayout.setCurrentIndex(1)
				if self.access == False:
						self.closeDatabase()

		def closeEvent(self, event):
				self.closeDatabase()