Module morseSpeedTimer
[hide private]
[frames] | no frames]

Source Code for Module morseSpeedTimer

  1  import time 
  2   
  3  from python_qt_binding import QtCore, QtGui; 
  4  #from QtGui import  
  5  from QtCore import QObject 
  6   
  7  from qt_comm_channel.commChannel import CommChannel 
8 9 -class MorseSpeedTimer(QObject):
10
11 - def __init__(self, parentWin):
12 super(MorseSpeedTimer,self).__init__(); 13 self.morseWin = parentWin; 14 self.resetAll(); 15 self.connectWidgets();
16
17 - def connectWidgets(self):
18 self.morseWin.speedMeasureClearButton.clicked.connect(self.resetAll);
19
20 - def timeMeToggled(self):
21 if self.currentlyTiming: 22 self.stopTiming(); 23 else: 24 self.startTiming();
25
26 - def resetAll(self):
27 self.numLetters = 0; 28 self.numWords = 0; 29 self.timerCocked = False; 30 self.setLettersLabel(0); 31 self.setWordsLabel(0); 32 self.setSpeedLabel(0); 33 self.startTime = 0; 34 self.currentlyTiming = False; 35 self.timingPaused = False; 36 self.morseWin.timeMeButton.setChecked(False); 37 self.morseWin.blinkCrosshair(doBlink=False);
38
39 - def startTiming(self):
40 self.resetAll(); 41 self.currentlyTiming = True; 42 self.timerCocked = True; 43 self.morseWin.blinkCrosshair(doBlink=True) 44 CommChannel.getSignal('MorseInputSignals.letterDone').connect(self.newLetter);
45
46 - def pauseTiming(self):
47 if not self.currentlyTiming: 48 return; 49 self.pauseStartTime = time.time(); 50 self.timingPaused = True; 51 self.morseWin.blinkCrosshair(doBlink=True);
52
53 - def resumeTiming(self):
54 if not self.timingPaused: 55 return; 56 timeResumed = time.time(); 57 self.startTime += (timeResumed - self.pauseStartTime); 58 self.timingPaused = False; 59 self.morseWin.blinkCrosshair(doBlink=False);
60
61 - def stopTiming(self):
62 self.endTime = time.time(); 63 self.currentlyTiming = False; 64 self.morseWin.blinkCrosshair(doBlink=False);
65 66 @QtCore.Slot(int,str)
67 - def newLetter(self, reason, detail):
68 if self.timerCocked: 69 self.timerCocked = False; 70 self.morseWin.blinkCrosshair(doBlink=False); 71 self.startTime = time.time(); 72 elif self.timingPaused or not self.currentlyTiming: 73 return; 74 75 self.numLetters += 1; 76 if self.numLetters % 5 == 0: 77 self.numWords = self.numLetters / 5.0; 78 speed = self.currentSpeed(); 79 self.setLettersLabel(self.numLetters); 80 self.setWordsLabel(self.numWords); 81 self.setSpeedLabel(speed);
82
83 - def currentSpeed(self):
84 elapsedTime = time.time() - self.startTime; 85 wpm = self.numWords*60.0/elapsedTime; 86 return wpm;
87
88 - def setLettersLabel(self, newNum):
89 self.setNumberDisplay(self.morseWin.numLettersInfoLabel, int(newNum));
90
91 - def setWordsLabel(self, newNum):
92 self.setNumberDisplay(self.morseWin.numWordsInfoLabel, int(newNum));
93
94 - def setSpeedLabel(self, newNum):
95 newNum = '%.2f' % newNum; 96 self.setNumberDisplay(self.morseWin.wpmSpeedInfoLabel, newNum);
97
98 - def setNumberDisplay(self, labelObj, newNum):
99 labelObj.setText(str(newNum));
100