annotate light8/Lightboard.py @ 62:2f2eb802e93d

stage shows levels now. aims have blue halo for easy recognition. stage shows levels now. aims have blue halo for easy recognition. old dummy config stored
author dmcc
date Tue, 09 Jul 2002 08:35:27 +0000
parents 2508c6b7a4e0
children 0bf7e664f913
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
1 from __future__ import nested_scopes
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
2
45b12307c695 Initial revision
drewp
parents:
diff changeset
3 from Tix import *
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
4 from time import sleep
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
5 from signal import signal, SIGINT
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
6 import sys, cPickle
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
7
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
8 import io
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
9 from uihelpers import *
45b12307c695 Initial revision
drewp
parents:
diff changeset
10 from panels import *
45b12307c695 Initial revision
drewp
parents:
diff changeset
11 from Xfader import *
45b12307c695 Initial revision
drewp
parents:
diff changeset
12 from subediting import Subediting
45b12307c695 Initial revision
drewp
parents:
diff changeset
13 from Fader import Fader
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
14 import stage
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
15 import Subs, Patch
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
16
45b12307c695 Initial revision
drewp
parents:
diff changeset
17 class Pickles:
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
18 def __init__(self, scalelevels, subs=None):
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
19 self.scalelevels = dict([(name, lev.get())
45b12307c695 Initial revision
drewp
parents:
diff changeset
20 for name, lev in scalelevels.items()])
45b12307c695 Initial revision
drewp
parents:
diff changeset
21 self.substate = dict([(name, subobj.get_state())
45b12307c695 Initial revision
drewp
parents:
diff changeset
22 for name, subobj in subs])
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
23 # print "substate", self.substate
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
24
45b12307c695 Initial revision
drewp
parents:
diff changeset
25 class Lightboard:
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
26 def __init__(self, master, parportdmx, DUMMY):
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
27 self.master = master
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
28 self.parportdmx = parportdmx
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
29 self.DUMMY = DUMMY
45b12307c695 Initial revision
drewp
parents:
diff changeset
30
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
31 self.channel_levels = []
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
32 self.scalelevels = {}
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
33 self.xfader = Xfader(self.scalelevels) # doesn't draw any UI yet-- look for self.xfader.setupwidget()
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
34 self.oldlevels = [None] * 68 # never replace this; just clear it
45b12307c695 Initial revision
drewp
parents:
diff changeset
35 self.subediting = Subediting(currentoutputlevels=self.oldlevels)
45b12307c695 Initial revision
drewp
parents:
diff changeset
36
45b12307c695 Initial revision
drewp
parents:
diff changeset
37 self.get_data()
45b12307c695 Initial revision
drewp
parents:
diff changeset
38 self.buildinterface()
45b12307c695 Initial revision
drewp
parents:
diff changeset
39 self.load()
45b12307c695 Initial revision
drewp
parents:
diff changeset
40 self.backgroundloop()
62
2f2eb802e93d stage shows levels now. aims have blue halo for easy recognition.
dmcc
parents: 61
diff changeset
41 self.updatestagelevels()
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
42
45b12307c695 Initial revision
drewp
parents:
diff changeset
43 def buildinterface(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
44 for w in self.master.winfo_children():
45b12307c695 Initial revision
drewp
parents:
diff changeset
45 w.destroy()
45b12307c695 Initial revision
drewp
parents:
diff changeset
46
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
47 stage_tl = toplevelat(22,30)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
48 s = stage.Stage(stage_tl)
45b12307c695 Initial revision
drewp
parents:
diff changeset
49 stage.createlights(s)
45b12307c695 Initial revision
drewp
parents:
diff changeset
50 s.setsubediting(self.subediting)
45b12307c695 Initial revision
drewp
parents:
diff changeset
51 s.pack()
62
2f2eb802e93d stage shows levels now. aims have blue halo for easy recognition.
dmcc
parents: 61
diff changeset
52 self.stage = s # save it
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
53
61
2508c6b7a4e0 scrolled sub panels which work
drewp
parents: 56
diff changeset
54 sub_tl = toplevelat(0,0,w=440,h=610)
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
55 effect_tl = toplevelat(462,4)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
56
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
57 self.subpanels = Subpanels(sub_tl, effect_tl, self, self.scalelevels,
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
58 Subs, self.xfader, self.changelevel,
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
59 self.subediting, Subs.longestsubname())
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
60
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
61 leveldisplay_tl = toplevelat(873,400)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
62 leveldisplay_tl.bind('<Escape>', sys.exit)
45b12307c695 Initial revision
drewp
parents:
diff changeset
63
45b12307c695 Initial revision
drewp
parents:
diff changeset
64 self.leveldisplay = Leveldisplay(leveldisplay_tl, self.channel_levels)
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
65 for i in range(0,len(self.channel_levels)):
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
66 self.channel_levels[i].config(text=self.oldlevels[i])
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
67 colorlabel(self.channel_levels[i])
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
68
45b12307c695 Initial revision
drewp
parents:
diff changeset
69 Console(self)
45b12307c695 Initial revision
drewp
parents:
diff changeset
70
45b12307c695 Initial revision
drewp
parents:
diff changeset
71 # root frame
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
72 controlpanel = Controlpanel(self.master, self.xfader, self.refresh, self.quit)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
73
45b12307c695 Initial revision
drewp
parents:
diff changeset
74 xf=Frame(self.master)
45b12307c695 Initial revision
drewp
parents:
diff changeset
75 xf.pack(side='right')
45b12307c695 Initial revision
drewp
parents:
diff changeset
76
45b12307c695 Initial revision
drewp
parents:
diff changeset
77 self.master.bind('<q>', self.quit)
45b12307c695 Initial revision
drewp
parents:
diff changeset
78 self.master.bind('<r>', self.refresh)
45b12307c695 Initial revision
drewp
parents:
diff changeset
79 leveldisplay_tl.bind('<q>', self.quit)
45b12307c695 Initial revision
drewp
parents:
diff changeset
80 leveldisplay_tl.bind('<r>', self.refresh)
45b12307c695 Initial revision
drewp
parents:
diff changeset
81
45b12307c695 Initial revision
drewp
parents:
diff changeset
82 self.xfader.setupwidget(xf)
45b12307c695 Initial revision
drewp
parents:
diff changeset
83 controlpanel.pack()
45b12307c695 Initial revision
drewp
parents:
diff changeset
84
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
85 cuefader_tl = toplevelat(78, 480)
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
86 cuefader = Fader(cuefader_tl, Subs.cues, self.scalelevels)
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
87 cuefader.pack()
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
88
45b12307c695 Initial revision
drewp
parents:
diff changeset
89 def get_data(self,*args):
45b12307c695 Initial revision
drewp
parents:
diff changeset
90 Subs.reload_data(self.DUMMY)
45b12307c695 Initial revision
drewp
parents:
diff changeset
91 Patch.reload_data(self.DUMMY)
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
92 print "Patch:", Patch.patch
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
93 print "Subs:", ', '.join(Subs.subs.keys())
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
94
45b12307c695 Initial revision
drewp
parents:
diff changeset
95 def refresh(self, *args):
45b12307c695 Initial revision
drewp
parents:
diff changeset
96 'rebuild interface, reload data'
45b12307c695 Initial revision
drewp
parents:
diff changeset
97 self.get_data()
45b12307c695 Initial revision
drewp
parents:
diff changeset
98 self.subediting.refresh()
45b12307c695 Initial revision
drewp
parents:
diff changeset
99 self.buildinterface()
45b12307c695 Initial revision
drewp
parents:
diff changeset
100 bindkeys(self.master,'<Escape>', self.quit)
45b12307c695 Initial revision
drewp
parents:
diff changeset
101
45b12307c695 Initial revision
drewp
parents:
diff changeset
102 def stageassub(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
103 """returns the current onstage lighting as a levels
45b12307c695 Initial revision
drewp
parents:
diff changeset
104 dictionary, skipping the zeros, and using names where
45b12307c695 Initial revision
drewp
parents:
diff changeset
105 possible"""
45b12307c695 Initial revision
drewp
parents:
diff changeset
106 levs=self.oldlevels
45b12307c695 Initial revision
drewp
parents:
diff changeset
107
45b12307c695 Initial revision
drewp
parents:
diff changeset
108 return dict([(Patch.get_channel_name(i),l) for i,l
45b12307c695 Initial revision
drewp
parents:
diff changeset
109 in zip(range(1,len(levs)+1),levs)
45b12307c695 Initial revision
drewp
parents:
diff changeset
110 if l>0])
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
111 def save_sub(self, name, levels):
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
112 if not name:
45b12307c695 Initial revision
drewp
parents:
diff changeset
113 print "Enter sub name in console."
45b12307c695 Initial revision
drewp
parents:
diff changeset
114 return
45b12307c695 Initial revision
drewp
parents:
diff changeset
115
45b12307c695 Initial revision
drewp
parents:
diff changeset
116 st = ''
45b12307c695 Initial revision
drewp
parents:
diff changeset
117 linebuf = 'subs["%s"] = {' % name
45b12307c695 Initial revision
drewp
parents:
diff changeset
118 for channame,lev in levels.items():
45b12307c695 Initial revision
drewp
parents:
diff changeset
119 if len(linebuf) > 60:
45b12307c695 Initial revision
drewp
parents:
diff changeset
120 st += linebuf + '\n '
45b12307c695 Initial revision
drewp
parents:
diff changeset
121 linebuf = ''
45b12307c695 Initial revision
drewp
parents:
diff changeset
122
45b12307c695 Initial revision
drewp
parents:
diff changeset
123 linebuf += ' "%s" : %d,' % (channame, lev)
45b12307c695 Initial revision
drewp
parents:
diff changeset
124 st += linebuf + '}\n'
45b12307c695 Initial revision
drewp
parents:
diff changeset
125 if self.DUMMY:
45b12307c695 Initial revision
drewp
parents:
diff changeset
126 filename = 'ConfigDummy.py'
45b12307c695 Initial revision
drewp
parents:
diff changeset
127 else:
45b12307c695 Initial revision
drewp
parents:
diff changeset
128 filename = 'Config.py'
45b12307c695 Initial revision
drewp
parents:
diff changeset
129 f = open(filename, 'a')
45b12307c695 Initial revision
drewp
parents:
diff changeset
130 f.write(st)
45b12307c695 Initial revision
drewp
parents:
diff changeset
131 f.close()
45b12307c695 Initial revision
drewp
parents:
diff changeset
132 print 'Added sub:', st
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
133 self.refresh()
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
134
45b12307c695 Initial revision
drewp
parents:
diff changeset
135 # this is called on a loop, and ALSO by the Scales
45b12307c695 Initial revision
drewp
parents:
diff changeset
136 def changelevel(self, *args):
45b12307c695 Initial revision
drewp
parents:
diff changeset
137 'Amp trims slider'
45b12307c695 Initial revision
drewp
parents:
diff changeset
138
45b12307c695 Initial revision
drewp
parents:
diff changeset
139 levels = [0] * 68
45b12307c695 Initial revision
drewp
parents:
diff changeset
140 for name, s in Subs.subs.items():
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
141 newlevels = s.get_levels(level=self.scalelevels[name].get())
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
142 for (ch, fadelev) in newlevels.items():
45b12307c695 Initial revision
drewp
parents:
diff changeset
143 levels[ch-1] = max(levels[ch-1], fadelev)
45b12307c695 Initial revision
drewp
parents:
diff changeset
144
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
145 levels = [int(l) for l in levels]
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
146
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
147 for lev,lab,oldlev,numlab in zip(levels, self.channel_levels,
45b12307c695 Initial revision
drewp
parents:
diff changeset
148 self.oldlevels,
45b12307c695 Initial revision
drewp
parents:
diff changeset
149 self.leveldisplay.number_labels):
45b12307c695 Initial revision
drewp
parents:
diff changeset
150 if lev != oldlev:
62
2f2eb802e93d stage shows levels now. aims have blue halo for easy recognition.
dmcc
parents: 61
diff changeset
151 lab.config(text="%d" % lev) # update labels in lev display
2f2eb802e93d stage shows levels now. aims have blue halo for easy recognition.
dmcc
parents: 61
diff changeset
152 colorlabel(lab) # recolor labels
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
153 if lev < oldlev:
45b12307c695 Initial revision
drewp
parents:
diff changeset
154 numlab['bg'] = 'blue'
45b12307c695 Initial revision
drewp
parents:
diff changeset
155 else:
45b12307c695 Initial revision
drewp
parents:
diff changeset
156 numlab['bg'] = 'red'
45b12307c695 Initial revision
drewp
parents:
diff changeset
157 else:
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
158 numlab['bg'] = 'lightPink'
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
159
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
160 self.oldlevels[:] = levels[:] # replace the elements in oldlevels - don't make a new list (Subediting is watching it)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
161
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
162 self.parportdmx.sendlevels(levels)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
163
62
2f2eb802e93d stage shows levels now. aims have blue halo for easy recognition.
dmcc
parents: 61
diff changeset
164 def updatestagelevels(self):
2f2eb802e93d stage shows levels now. aims have blue halo for easy recognition.
dmcc
parents: 61
diff changeset
165 self.master.after(100, self.updatestagelevels)
2f2eb802e93d stage shows levels now. aims have blue halo for easy recognition.
dmcc
parents: 61
diff changeset
166 for lev, idx in zip(self.oldlevels, xrange(0, 68 + 1)):
2f2eb802e93d stage shows levels now. aims have blue halo for easy recognition.
dmcc
parents: 61
diff changeset
167 self.stage.updatelightlevel(Patch.get_channel_name(idx + 1), lev)
2f2eb802e93d stage shows levels now. aims have blue halo for easy recognition.
dmcc
parents: 61
diff changeset
168
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
169 def load(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
170 try:
45b12307c695 Initial revision
drewp
parents:
diff changeset
171 filename = '/tmp/light9.prefs'
45b12307c695 Initial revision
drewp
parents:
diff changeset
172 if self.DUMMY:
45b12307c695 Initial revision
drewp
parents:
diff changeset
173 filename += '.dummy'
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
174 print "Loading from", filename
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
175 file = open(filename, 'r')
45b12307c695 Initial revision
drewp
parents:
diff changeset
176 p = cPickle.load(file)
45b12307c695 Initial revision
drewp
parents:
diff changeset
177 for s, v in p.scalelevels.items():
45b12307c695 Initial revision
drewp
parents:
diff changeset
178 try:
45b12307c695 Initial revision
drewp
parents:
diff changeset
179 self.scalelevels[s].set(v)
45b12307c695 Initial revision
drewp
parents:
diff changeset
180 except Exception,e:
45b12307c695 Initial revision
drewp
parents:
diff changeset
181 print "Couldn't set %s -> %s: %s" % (s, v,e)
45b12307c695 Initial revision
drewp
parents:
diff changeset
182 for name, substate in p.substate.items():
45b12307c695 Initial revision
drewp
parents:
diff changeset
183 try:
45b12307c695 Initial revision
drewp
parents:
diff changeset
184 Subs.subs[name].set_state(substate)
45b12307c695 Initial revision
drewp
parents:
diff changeset
185 except Exception, e:
45b12307c695 Initial revision
drewp
parents:
diff changeset
186 print "Couldn't set sub %s state: %s" % (name,e)
45b12307c695 Initial revision
drewp
parents:
diff changeset
187 except IOError, e:
45b12307c695 Initial revision
drewp
parents:
diff changeset
188 print "IOError: Couldn't load prefs (%s): %s" % (filename,e)
45b12307c695 Initial revision
drewp
parents:
diff changeset
189 except EOFError, e:
45b12307c695 Initial revision
drewp
parents:
diff changeset
190 print "EOFrror: Couldn't load prefs (%s): %s" % (filename,e)
45b12307c695 Initial revision
drewp
parents:
diff changeset
191 except Exception,e:
45b12307c695 Initial revision
drewp
parents:
diff changeset
192 print "Couldn't load prefs (%s): %s" % (filename,e)
45b12307c695 Initial revision
drewp
parents:
diff changeset
193
45b12307c695 Initial revision
drewp
parents:
diff changeset
194 def backgroundloop(self, *args):
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
195 self.master.after(50, self.backgroundloop, ())
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
196 self.changelevel()
45b12307c695 Initial revision
drewp
parents:
diff changeset
197 def quit(self, *args):
45b12307c695 Initial revision
drewp
parents:
diff changeset
198 self.save()
45b12307c695 Initial revision
drewp
parents:
diff changeset
199 self.master.destroy()
45b12307c695 Initial revision
drewp
parents:
diff changeset
200 sys.exit()
45b12307c695 Initial revision
drewp
parents:
diff changeset
201 def save(self, *args):
45b12307c695 Initial revision
drewp
parents:
diff changeset
202 filename = '/tmp/light9.prefs'
45b12307c695 Initial revision
drewp
parents:
diff changeset
203 if self.DUMMY:
45b12307c695 Initial revision
drewp
parents:
diff changeset
204 filename += '.dummy'
56
2af6698b0566 pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find)
drewp
parents: 0
diff changeset
205 print "Saving to", filename
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
206 file = open(filename, 'w')
45b12307c695 Initial revision
drewp
parents:
diff changeset
207 try:
45b12307c695 Initial revision
drewp
parents:
diff changeset
208 cPickle.dump(Pickles(self.scalelevels, Subs.subs.items()), file)
45b12307c695 Initial revision
drewp
parents:
diff changeset
209 except cPickle.UnpickleableError:
45b12307c695 Initial revision
drewp
parents:
diff changeset
210 print "UnpickleableError! There's yer problem."