1 import time
2
3 from python_qt_binding import QtCore, QtGui;
4
5 from QtCore import QObject
6
7 from qt_comm_channel.commChannel import CommChannel
10
16
19
25
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
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
47 if not self.currentlyTiming:
48 return;
49 self.pauseStartTime = time.time();
50 self.timingPaused = True;
51 self.morseWin.blinkCrosshair(doBlink=True);
52
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
62 self.endTime = time.time();
63 self.currentlyTiming = False;
64 self.morseWin.blinkCrosshair(doBlink=False);
65
66 @QtCore.Slot(int,str)
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
84 elapsedTime = time.time() - self.startTime;
85 wpm = self.numWords*60.0/elapsedTime;
86 return wpm;
87
90
93
95 newNum = '%.2f' % newNum;
96 self.setNumberDisplay(self.morseWin.wpmSpeedInfoLabel, newNum);
97
99 labelObj.setText(str(newNum));
100