Rev 3 | Blame | Last modification | View Log | RSS feed
#-----------------------------------------------------------------------------# Name: mainwindow.py# Purpose:## Author: Ron Wellsted## Created: 2015-10-13# Copyright: (c) 2015# Licence: GPL 3.0#-----------------------------------------------------------------------------# Date Author Modification#-----------------------------------------------------------------------------# -*- coding: utf-8 -*-from PyQt4 import uic, QtGuifrom PyQt4.QtCore import pyqtSlot, QTime, QTimer(Ui_MainWindow, QMainWindow) = uic.loadUiType('mainwindow.ui')# Exam durations and half time as hh:mm:ssFoundationDuration = '00:55:00'FoundationHalfTime = '00:27:30'IntermediateDuration = '01:25:00'IntermediateHalfTime = '00:42:30'AdvancedDuration = '02:00:00'AdvancedHalfTime = '01:00:00'class MainWindow (QMainWindow):"""MainWindow inherits QMainWindow"""_timer = None_Foundation = QTime.fromString(FoundationDuration)_FoundationHalfTime = QTime.fromString(FoundationHalfTime)_Intermediate = QTime.fromString(IntermediateDuration)_IntermediateHalfTime = QTime.fromString(IntermediateHalfTime)_Advanced = QTime.fromString(AdvancedDuration)_AdvancedHalfTime = QTime.fromString(AdvancedHalfTime)_Elapsed = QTime.fromString('00:00:00')_running = False_zero = QTime.fromString('00:00:00')_TenMins = QTime.fromString('00:10:00')def __init__ (self, parent = None):QMainWindow.__init__(self, parent)self.ui = Ui_MainWindow()self.ui.setupUi(self)self._timer = QTimer()self._timer.timeout.connect(self.slotUpdate)self._timer.start(1000)time = QTime.currentTime()now = time.toString('hh:mm:ss')self.ui.lcdNow.display(now)self.ui.lcdFoundation.display(self._Foundation.toString('hh:mm:ss'))self.ui.lcdIntermediate.display(self._Intermediate.toString('hh:mm:ss'))self.ui.lcdAdvanced.display(self._Advanced.toString('hh:mm:ss'))self.ui.lcdElapsed.display(self._Elapsed.toString('hh:mm:ss'))def closeEvent(self, event):if QtGui.QMessageBox.question(self, 'Confirmation', 'Close application ?', \QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) != QtGui.QMessageBox.Yes:event.ignore()else:event.accept()@pyqtSlot()def slotHelpAbout(self):from HelpAbout import HelpAboutdlg = HelpAbout(self)dlg.exec_()@pyqtSlot()def slotUpdate(self):time = QTime.currentTime()now = time.toString('hh:mm:ss')self.ui.lcdNow.display(now)if self._running:self._Elapsed = self._Elapsed.addSecs(1)self.ui.lcdElapsed.display(self._Elapsed.toString('hh:mm:ss'))if self._Foundation is not None:self._Foundation = self._Foundation.addSecs(-1)self.ui.lcdFoundation.display(self._Foundation.toString('hh:mm:ss'))palette = self.ui.lcdFoundation.palette()if self._Foundation.__le__(self._FoundationHalfTime):# change background to yellowpalette.setColor(palette.Window, QtGui.QColor(255, 255, 0))if self._Foundation.__le__(self._TenMins):# change background to orangepalette.setColor(palette.Window, QtGui.QColor(255, 170, 0))if self._Foundation.__eq__(self._zero):# change background to red & stop countingself._Foundation = Nonepalette.setColor(palette.Window, QtGui.QColor(255, 0, 0))self.ui.lcdFoundation.setPalette(palette)if self._Intermediate is not None:self._Intermediate = self._Intermediate.addSecs(-1)self.ui.lcdIntermediate.display(self._Intermediate.toString('hh:mm:ss'))palette = self.ui.lcdIntermediate.palette()if self._Intermediate.__le__(self._IntermediateHalfTime):# change background to yellowpalette.setColor(palette.Window, QtGui.QColor(255, 255, 0))if self._Intermediate.__le__(self._TenMins):# change background to orangepalette.setColor(palette.Window, QtGui.QColor(255, 170, 0))if self._Intermediate.__eq__(self._zero):# change background to red & stop countingself._Intermediate = Nonepalette.setColor(palette.Window, QtGui.QColor(255, 0, 0))self.ui.lcdIntermediate.setPalette(palette)if self._Advanced is not None:self._Advanced = self._Advanced.addSecs(-1)self.ui.lcdAdvanced.display(self._Advanced.toString('hh:mm:ss'))palette = self.ui.lcdAdvanced.palette()if self._Advanced.__le__(self._AdvancedHalfTime):# change background to yellowpalette.setColor(palette.Window, QtGui.QColor(255, 255, 0))if self._Advanced.__le__(self._TenMins):# change background to orangepalette.setColor(palette.Window, QtGui.QColor(255, 170, 0))if self._Advanced.__eq__(self._zero):# change background to red & stop countingself._Advanced = Noneself._running = Falsepalette.setColor(palette.Window, QtGui.QColor(255, 0, 0))self.ui.lcdAdvanced.setPalette(palette)@pyqtSlot()def slotStart(self):self._running = Trueself.ui.pushStart.setEnabled(False)@pyqtSlot()def slotFoundation(self):if self.ui.actionFoundation.isChecked():self._Foundation = QTime.fromString(FoundationDuration)self.ui.lcdFoundation.display(self._Foundation.toString('hh:mm:ss'))self.ui.lcdFoundation.show()self.ui.labelFoundation.show()else:self._Foundation = Noneself.ui.lcdFoundation.hide()self.ui.labelFoundation.hide()@pyqtSlot()def slotIntermediate(self):if self.ui.actionIntermediate.isChecked():self._Intermediate = QTime.fromString(IntermediateDuration)self.ui.lcdIntermediate.display(self._Intermediate.toString('hh:mm:ss'))self.ui.lcdIntermediate.show()self.ui.labelIntermediate.show()else:self._Intermediate = Noneself.ui.lcdIntermediate.hide()self.ui.labelIntermediate.hide()@pyqtSlot()def slotAdvanced(self):if self.ui.actionAdvanced.isChecked():self._Advanced = QTime.fromString(AdvancedDuration)self.ui.lcdAdvanced.display(self._Advanced.toString('hh:mm:ss'))self.ui.lcdAdvanced.show()self.ui.labelAdvanced.show()else:self._Advanced = Noneself.ui.lcdAdvanced.hide()self.ui.labelAdvanced.hide()