forked from ticalc-travis/amphetype
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Amphetype.py
106 lines (79 loc) · 3.1 KB
/
Amphetype.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
from __future__ import with_statement, division
import sys
# Get command-line --database argument before importing
# modules which count on database support
from Config import Settings
import optparse
opts = optparse.OptionParser()
opts.add_option("-d", "--database", metavar="FILE", help="use database FILE")
v = opts.parse_args()[0]
if v.database is not None:
Settings.set('db_name', v.database)
from Data import DB
from Quizzer import Quizzer
from StatWidgets import StringStats
from TextManager import TextManager
from Performance import PerformanceHistory
from Config import PreferenceWidget
from Lesson import LessonGenerator
from Widgets.Database import DatabaseWidget
from PyQt4.QtCore import *
from PyQt4.QtGui import *
QApplication.setStyle('cleanlooks')
class TyperWindow(QMainWindow):
def __init__(self, *args):
super(TyperWindow, self).__init__(*args)
self.setWindowTitle("Amphetype")
tabs = QTabWidget()
quiz = Quizzer()
tabs.addTab(quiz, "Typer")
tm = TextManager()
self.connect(quiz, SIGNAL("wantText"), tm.nextText)
self.connect(tm, SIGNAL("setText"), quiz.setText)
self.connect(tm, SIGNAL("gotoText"), lambda: tabs.setCurrentIndex(0))
self.connect(quiz, SIGNAL("newReview"), tm.newReview)
self.connect(quiz, SIGNAL("lastText"), tm.lastText)
tabs.addTab(tm, "Sources")
ph = PerformanceHistory()
self.connect(tm, SIGNAL("refreshSources"), ph.refreshSources)
self.connect(quiz, SIGNAL("statsChanged"), ph.updateData)
self.connect(ph, SIGNAL("setText"), quiz.setText)
self.connect(ph, SIGNAL("gotoText"), lambda: tabs.setCurrentIndex(0))
tabs.addTab(ph, "Performance")
st = StringStats()
self.connect(st, SIGNAL("lessonStrings"), lambda x: tabs.setCurrentIndex(4))
tabs.addTab(st, "Analysis")
lg = LessonGenerator()
self.connect(st, SIGNAL("lessonStrings"), lg.addStrings)
self.connect(lg, SIGNAL("newLessons"), lambda: tabs.setCurrentIndex(1))
self.connect(lg, SIGNAL("newLessons"), tm.addTexts)
self.connect(quiz, SIGNAL("wantReview"), lg.wantReview)
self.connect(lg, SIGNAL("newReview"), tm.newReview)
tabs.addTab(lg, "Lesson Generator")
dw = DatabaseWidget()
tabs.addTab(dw, "Database")
pw = PreferenceWidget()
tabs.addTab(pw, "Preferences")
ab = AboutWidget()
tabs.addTab(ab, "About/Help")
self.setCentralWidget(tabs)
tm.nextText()
def sizeHint(self):
return QSize(650, 400)
class AboutWidget(QTextBrowser):
def __init__(self, *args):
html = "about.html file missing!"
try:
html = open("about.html", "r").read()
except:
pass
super(AboutWidget, self).__init__(*args)
self.setHtml(html)
self.setOpenExternalLinks(True)
self.setReadOnly(True)
app = QApplication(sys.argv)
w = TyperWindow()
w.show()
app.exec_()
print("exit")
DB.commit()