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
107
108
109
110
111
112
113
114
115
116
117
118
119
|
"""
Last Page, used in First Run Wizard
"""
import logging
from PyQt4 import QtGui
from leap.util.coroutines import coroutine
from leap.gui.constants import APP_LOGO, APP_WATERMARK
logger = logging.getLogger(__name__)
class LastPage(QtGui.QWizardPage):
def __init__(self, parent=None):
super(LastPage, self).__init__(parent)
self.setTitle(self.tr(
"Connecting to Encrypted Internet Proxy service..."))
self.setPixmap(
QtGui.QWizard.WatermarkPixmap,
QtGui.QPixmap(APP_WATERMARK))
self.setPixmap(
QtGui.QWizard.LogoPixmap,
QtGui.QPixmap(APP_LOGO))
self.label = QtGui.QLabel()
self.label.setWordWrap(True)
self.wizard_done = False
# XXX REFACTOR to a Validating Page...
self.status_line_1 = QtGui.QLabel()
self.status_line_2 = QtGui.QLabel()
self.status_line_3 = QtGui.QLabel()
self.status_line_4 = QtGui.QLabel()
self.status_line_5 = QtGui.QLabel()
layout = QtGui.QVBoxLayout()
layout.addWidget(self.label)
# make loop
layout.addWidget(self.status_line_1)
layout.addWidget(self.status_line_2)
layout.addWidget(self.status_line_3)
layout.addWidget(self.status_line_4)
layout.addWidget(self.status_line_5)
self.setLayout(layout)
def isComplete(self):
return self.wizard_done
def set_status_line(self, line, status):
statusline = getattr(self, 'status_line_%s' % line)
if statusline:
statusline.setText(status)
def set_finished_status(self):
self.setTitle(self.tr('You are now using an encrypted connection!'))
finishText = self.wizard().buttonText(
QtGui.QWizard.FinishButton)
finishText = finishText.replace('&', '')
self.label.setText(self.tr(
"Click '<i>%s</i>' to end the wizard and "
"save your settings." % finishText))
self.wizard_done = True
self.completeChanged.emit()
@coroutine
def eip_status_handler(self):
# XXX this can be changed to use
# signals. See progress.py
logger.debug('logging status in last page')
self.validation_done = False
status_count = 1
try:
while True:
status = (yield)
status_count += 1
# XXX add to line...
logger.debug('status --> %s', status)
self.set_status_line(status_count, status)
if status == "connected":
self.set_finished_status()
self.completeChanged.emit()
break
self.completeChanged.emit()
except GeneratorExit:
pass
except StopIteration:
pass
def initializePage(self):
super(LastPage, self).initializePage()
wizard = self.wizard()
wizard.button(QtGui.QWizard.FinishButton).setDisabled(True)
handler = self.eip_status_handler()
# get statuses done in prev page
for st in wizard.openvpn_status:
self.send_status(handler.send, st)
# bind signal for events yet to come
eip_statuschange_signal = wizard.eip_statuschange_signal
if eip_statuschange_signal:
eip_statuschange_signal.connect(
lambda status: self.send_status(
handler.send, status))
self.completeChanged.emit()
def send_status(self, cb, status):
try:
cb(status)
except StopIteration:
pass
|