1 |
# !Currency.py.Update/py |
2 |
|
3 |
import swi |
4 |
import wimp |
5 |
import ConvrtW |
6 |
import Rates |
7 |
|
8 |
|
9 |
def update(): |
10 |
global window_update |
11 |
window_update = wimp.window('update') |
12 |
status(wimp.lookup('status.begin'), 1, wimp.lookup('action.begin')) |
13 |
window_update.open_centred(-1) |
14 |
window_update.put_caret() |
15 |
if action(): |
16 |
return |
17 |
while 1: |
18 |
status(wimp.lookup('status.updating'), 0, 0) |
19 |
wimp.hourglass_on() |
20 |
try: |
21 |
Rates.update(wimp.lookup('url'), '<Currency$Dir>.Rates', |
22 |
wimp.lookup('us'), wimp.lookup('dollar')) |
23 |
except IOError, (type, error): |
24 |
wimp.hourglass_off() |
25 |
swi.swi(0x107, '') |
26 |
status(wimp.lookup('status.error') % (type, error), 1, wimp.lookup('action.error')) |
27 |
if action(): |
28 |
return |
29 |
continue |
30 |
break |
31 |
ConvrtW.update() |
32 |
wimp.hourglass_off() |
33 |
status(wimp.lookup('status.done') % Rates.date(), 0, wimp.lookup('action.done')) |
34 |
if action(): |
35 |
return |
36 |
window_update.remove() |
37 |
|
38 |
|
39 |
def action(): |
40 |
while 1: |
41 |
event, details = wimp.poll(1) |
42 |
if event == 6: |
43 |
if details[0] == window_update: |
44 |
window_update.put_caret() |
45 |
if details[0] == window_update and details[1] == 2: |
46 |
return 0 |
47 |
elif details[0] == window_update and details[1] == 1: |
48 |
window_update.remove() |
49 |
return 1 |
50 |
elif details[0] != window_update: |
51 |
window_update.remove() |
52 |
wimp.handle((event, details)) |
53 |
return 1 |
54 |
elif event == 8: |
55 |
if details[0] == window_update and details[2] == 0xd: |
56 |
return 0 |
57 |
elif details[0] == window_update and details[2] == 0x1b: |
58 |
window_update.remove() |
59 |
return 1 |
60 |
else: |
61 |
wimp.handle((event, details)) |
62 |
else: |
63 |
wimp.handle((event, details)) |
64 |
|
65 |
|
66 |
def status(status, cancel, action): |
67 |
window_update.icon_text(0, status) |
68 |
window_update.icon_grey(1, 1 - cancel) |
69 |
if action == 0: |
70 |
window_update.icon_grey(2) |
71 |
else: |
72 |
window_update.icon_ungrey(2) |
73 |
window_update.icon_text(2, action) |