1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 import VisionEgg
18 __version__ = VisionEgg.release_name
19 __cvs__ = '$Revision$'.split()[1]
20 __date__ = ' '.join('$Date$'.split()[1:3])
21 __author__ = 'Andrew Straw <astraw@users.sourceforge.net>'
22
23 import sys, os, math
24 import parser, symbol, token, compiler
25 import tkMessageBox
26 import pygame.display
27 import VisionEgg.Core
28 import VisionEgg.FlowControl
29 import VisionEgg.SphereMap
30 import VisionEgg.Text
31 import VisionEgg.Textures
32 import VisionEgg.PyroHelpers
33 import Pyro, Pyro.core
34
35
36 import VisionEgg.PyroApps.AST_ext as AST_ext
37
38
39 import VisionEgg.PyroApps.TargetServer
40 import VisionEgg.PyroApps.MouseTargetServer
41 import VisionEgg.PyroApps.FlatGratingServer
42 import VisionEgg.PyroApps.SphereGratingServer
43 import VisionEgg.PyroApps.SpinningDrumServer
44 import VisionEgg.PyroApps.GridServer
45 import VisionEgg.PyroApps.ColorCalServer
46 import VisionEgg.PyroApps.DropinServer
47
48 server_modules = [ VisionEgg.PyroApps.TargetServer,
49 VisionEgg.PyroApps.MouseTargetServer,
50 VisionEgg.PyroApps.FlatGratingServer,
51 VisionEgg.PyroApps.SphereGratingServer,
52 VisionEgg.PyroApps.SpinningDrumServer,
53 VisionEgg.PyroApps.GridServer,
54 VisionEgg.PyroApps.ColorCalServer,
55 VisionEgg.PyroApps.DropinServer
56 ]
57
58
59 from VisionEgg.PyroApps.ScreenPositionServer import ScreenPositionMetaController
60 from VisionEgg.PyroApps.ScreenPositionGUI import ScreenPositionParameters
61
63 - def __init__(self, presentation, server_modules ):
64 Pyro.core.ObjBase.__init__(self)
65 self.stimdict = {}
66 self.stimkey = server_modules[0].get_meta_controller_stimkey()
67 self.quit_status = False
68 self.exec_demoscript_flag = False
69 self.presentation = presentation
70
71 self.onset_cal_bg = VisionEgg.MoreStimuli.Target2D(color=(0.0,0.0,0.0,1.0),
72 position=(30.0,30.0),
73 anchor='center',
74 size=(50.0,50.0))
75 self.onset_cal_fg = VisionEgg.MoreStimuli.Target2D(on=0,
76 color=(1.0,1.0,1.0,1.0),
77 position=(30.0,30.0),
78 anchor='center',
79 size=(50.0,50.0))
80 self.presentation.add_controller(self.onset_cal_fg,'on',VisionEgg.FlowControl.ConstantController(during_go_value=1,
81 between_go_value=0))
82
83 self.onset_cal_screen = self.presentation.parameters.viewports[0].parameters.screen
84 self.onset_cal_viewport = VisionEgg.Core.Viewport(screen=self.onset_cal_screen,
85 stimuli=[self.onset_cal_bg,
86 self.onset_cal_fg]
87 )
88
89 for server_module in server_modules:
90 stimkey = server_module.get_meta_controller_stimkey()
91 klass = server_module.get_meta_controller_class()
92 make_stimuli = server_module.make_stimuli
93 self.stimdict[stimkey] = (klass, make_stimuli)
94
98
100 return self.quit_status
101
103 self.quit_status = quit_status
104 self.presentation.parameters.quit = quit_status
105
107
108 self.presentation.parameters.quit = True
109
111 if on:
112 if self.onset_cal_viewport not in self.presentation.parameters.viewports:
113 self.presentation.parameters.viewports.append(self.onset_cal_viewport)
114 else:
115 if self.onset_cal_viewport in self.presentation.parameters.viewports:
116 self.presentation.parameters.viewports.remove(self.onset_cal_viewport)
117
119 self.onset_cal_bg.parameters.position = center
120 self.onset_cal_fg.parameters.position = center
121 self.onset_cal_bg.parameters.size = size
122 self.onset_cal_fg.parameters.size = size[0]-2,size[1]-2
123
125 x,y = self.onset_cal_bg.parameters.position
126 width,height = self.onset_cal_bg.parameters.size
127 return x,y,width,height
128
131
134
137
140
142 value_sec = float(value_sec_string)
143 self.presentation.parameters.override_t_abs_sec = value_sec
144
152
155
157 self.stimkey = stimkey
158
160 return os.path.abspath(os.curdir)
161
162 - def save_image_sequence(self,fps=12.0,filename_base="im",filename_suffix=".tif",save_dir="."):
163 try:
164 self.presentation.export_movie_go(frames_per_sec=fps,
165 filename_base=filename_base,
166 filename_suffix=filename_suffix,
167 path=save_dir
168 )
169 except Exception,x:
170
171 import traceback
172 traceback.print_exc()
173 raise
174
176 AST = parser.suite(source)
177 self.AST = AST
178
179 - def exec_AST(self, screen, dropin_meta_params):
180
181 if dropin_meta_params.vars_list is not None:
182 for var in dropin_meta_params.vars_list:
183 self.AST = AST_ext.modify_AST(self.AST, var[0], var[1])
184
185 code_module = self.AST.compile()
186 exec code_module in locals()
187 self.script_dropped_frames = p.were_frames_dropped_in_last_go_loop()
188 self.presentation.last_go_loop_start_time_absolute_sec = p.last_go_loop_start_time_absolute_sec
189 self.exec_demoscript_flag = False
190
192 self.exec_demoscript_flag = True
193